- 浏览: 453240 次
- 性别:
- 来自: 成都
文章分类
- 全部博客 (377)
- Java (66)
- C++ (0)
- VC++ (0)
- .net (1)
- css (36)
- 数据库 (22)
- html (2)
- extjs (1)
- jpbm (0)
- javascript (31)
- 物资管理 (1)
- java基础 (5)
- C# (0)
- Android (56)
- window service (1)
- 其他 (2)
- Web服务器 (7)
- jbpm (1)
- eclipse (2)
- tomcat (3)
- java字符串与二进制的相互转化 (1)
- Oracle 数据库 (6)
- FreeMarker (8)
- 浏览器 (1)
- php (1)
- photoshop (6)
- spring (4)
- spring mvc (2)
- Acegi (1)
- webStorm 3.0 (4)
- Mongodb (8)
- mysql (9)
- 软件开发:需求分析 (1)
- 把Java程序作为Windows系统服务 (1)
- nodejs (4)
- json (1)
- 缓存 (1)
- J2ee (2)
- Flash报表 (1)
- MyEclipse+Maven+Tomcat (11)
- 生活 (1)
- Ubuntu (1)
- Bootstrap (1)
- jquery easy ui (2)
- 敏捷开发 (1)
- phone gap (1)
- rest (1)
- 移动开发 (22)
- Redis + Jedis + Spring (3)
- anroid (7)
- grunt 教程 (7)
- PhoneGap (2)
- sublime text (7)
- mariadb (1)
- linux (1)
- maven (2)
- jquery (1)
- ActiveMQ (1)
- LVS Nginx (1)
- nginx (6)
- ngnix (1)
- 爱因斯坦 (1)
- 天干地支 (1)
最新评论
-
muqingren:
...
Maven多模块布局实例详解 -
shutear:
解决了我的难题,谢谢分享!
Unable to load configuration. - action - file:/D:/studytool/apache-tomcat-6.0.16 -
702346318:
[img][/img][flash=200,200][/fla ...
CAS单点登录完整教程(上)【转】 -
liuguofeng:
PersonS631887934 写道学习中。。 有个问题想请 ...
js constructor属性 -
S631887934:
学习中。。 有个问题想请教楼主为什么要加上Person.pro ...
js constructor属性
ORACLE 游标 一. PL/SQL 是用游标来管理 SQL 的 SELECT 语句的 . 游标是为了处理这些语句而分配的一大块内存 . 它提供了对一个结果集进行逐行处理的能力 , 可看作是一种特殊的指针 . 它与某个查询结果集相关联 , 可以指向结果集的任意位置 , 以便对指定位置的数据进行处理 . 使用它可以在查询数据的同时对数据进行处理 . 二. 游标的分类 : 静态游标和动态游标 1. 在说明游标分类之前, 先说明一下PL/SQL 的两个操作, 游标属性, 变量属性 SET SERVEROUTPUT ON ;-- 此语句用于开启打印输出功能 DMBS_OUTPUT.PUT_LINE();-- 打印输出并换行. %FOUND: 判断当前游标是否指向有效的一条行记录. 是则返回TRUE, 否则返回FALSE %NOTFOUND: 与%FOUND 恰好相反. %ISOPEN: 判断游标是否打开, 打开则返回TRUE, 否则返回FALSE. %ROWCOUNT: 判断当前游标在所指向的结果集中提取的行数. 并非所有总记录数 %TYPE: 声明变量的类型与表中的某列的数据类型完全一致.%TYPE 声明有两个好处: 一是你不必知道某列的确切数据类型二是当某列的数据类型改变时不用修改变量的数据类型. %ROWTYPE: 声明变量的数据类型与表中的行记录数据类型一致. 对于自定义的记录, 则必须声明自己的域. 2. 静态游标: 静态游标又可以分为两类: 1) 隐式游标 隐式游标的特点: - 隐式游标是由PL/SQL 来管理的, 即不需要声明游标语句, 也不需要OPEN,FETCH,CLOSE 操作 - 隐式游标中必须要有select cur_name into [ 变量名或其他数据类型]. 此句完成OPEN,FETCH,CLOSE 操作. - 隐式游标只能返回一行记录, 如果无符合条件的记录将会出现NO_DATA_FOUND 异常. 如果出现多条记录将出现TOO_MANY_ROWS 异常. - 隐式游标只能用SQL% 判断其游标属性 - 对于任何位置使用SQL%ISOPEN 结果都是FALSE, 隐式游标由PL/SQL 管理 - 对于在隐式游标位置前使用SQL%FOUND 或SQL%NOTFOUND, SQL%ROWCOUNT 结果值是NULL( 不确定值) 示例表: 表名:test 字段名 数据类型 可否为空 id( 序号) number N name( 姓名) varchar2(20) N zym( 专业名) varchar(40) Y cj( 成绩) number Y logdate( 记录日期) date Y EG1: 验证隐式游标的特性 set serveroutput on;-- 开启输出 declare no test.id%type;-- 声明变量no 的数据类型同test 表的id 列一致 ename test.name%type; begin if sql%isopen then -- 判断游标是否打开 dbms_output.put_line(' cursor is openning'); else dbms_output.put_line('cursor is closed'); end if; if sql%notfound then – 判断游标是否指向有效的行 dbms_output.put_line('no value'); else dbms_output.put_line(no||' '||ename); end if; dbms_output.put_line(sql%rowcount); dbms_output.put_line('---------------'); select id ,name into no ,ename from test where cj=90;-- 隐式游标必-- 须使用INTO dbms_output.put_line(sql%rowcount); if sql%isopen then dbms_output.put_line(' cursor is openning'); else dbms_output.put_line('cursor is closed'); end if; if sql%notfound then dbms_output.put_line('no value'); else dbms_output.put_line(no||' '||ename); end if; exception when no_data_found then dbms_output.put_line('no value'); when too_many_rows then dbms_output.put_line('too many rows'); end; 执行结果为: cursor is closed -------------------- 1 cursor is closed 1001 qbnajj 去掉where 条件时的结果: cursor is closed -------------------- too many rows EG2: 使用%ROWTYPE declare rowtype test%rowtype; begin select * into rowtype from test where cj=90; dbms_output.put_line(rowtype.name||' '||rowtype.cj); exception when no_data_found then dbms_output.put_line('no value'); when too_many_rows then dbms_output.put_line('too many rows'); end; 执行结果: qbnajj 90 EG3: 自定义RECORD 数据类型 declare type r_type is record(name test.name%type ,cj test.cj%type); re_type r_type; begin select name,cj into re_type from test where cj=90; dbms_output.put_line(re_type.name||' '||re_type.cj); exception when no_data_found then dbms_output.put_line('no value'); when too_many_rows then dbms_output.put_line('too many rows'); end; / 执行结果: qbnajj 90 2) 显示游标 声明语法: DECLARE CURSOR cur_name( 参数名 数据类型) is select_satatements ;-- 游标名后-- 可带参数 BEGIN OPEN cur_name; FETCH cur_name into [ 变量或者其他数据类型]; -- 可用循环语句迭代输出游标所指向的结果集. CLOSE cur_name; END; 显示游标特性: - 显示游标由用户定义, 并由用户来管理游标, 可返回多行记录. - 通常使用显示游标需要遵守以下规则 声明游标 -> 打开游标 -> 读取数据 -> 关闭游标 但由于FOR IN LOOP 语句包含OPEN,FETCH,CLOSE 操作所以不在此例. - 查看游标属性时, 使用cur_name%. EG:PL/SQL 演示 declare no test.id%type; ename test.name%type; cjs test.cj%type; cursor test_cur is select id,name from test where cj>=cjs;-- 可通过PL/SQL 绑定变量输-- 入值(&cjs) begin cjs:=50; for t_cur in test_cur loop no:=t_cur.id; ename:=t_cur.name; dbms_output.put_line(no||' '||ename); end loop; end; 执行结果: chenjunhua 80 qbnajj 90 cjh 52 EG2: 利用带参数的存储过程演示 create or replace procedure test_proce(cjs in test.cj%type) as no test.id%type; ename test.name%type; cursor test_cur is select id,name from test where cj>=cjs; begin open test_cur; fetch test_cur into no,ename; while test_cur%found loop dbms_output.put_line(no||' '||ename); fetch test_cur into no,ename;-- 将游标指向下条记录, 否则为死循环. end loop; close test_cur; end test_proce; exec test_proce(50); 执行结果: chenjunhua 80 qbnajj 90 cjh 52 EG3: 带参数的游标与上面的类似
发表评论
-
数据库悲观锁和乐观锁
2014-07-06 17:48 636一下是转载的oracle和Mysql两种数据库悲观锁和乐观锁 ... -
Mysql常用命令七(MySQL的优化方法)
2014-10-28 09:36 1184MySQL的优化 一、我们可以且应该优化什么? 硬件 操作 ... -
mysql 中 时间和日期函数
2014-10-28 09:36 634mysql 中 时间和日期函数 一、MySQL 获 ... -
Oracle创建用户/密码并授权 移除权限
2012-03-09 14:07 3275Oracle创建用户/密码并授权 (1) 创建用 ... -
数据字典和动态性能视图
2011-07-01 11:33 1166最近开始学习oracle,现把笔记一分享如下. 一.数据字 ... -
在Oracle的函数中,返回表类型
2011-07-01 11:31 1382在SQL Server中有表变量,可以在functio ... -
Oracle 系统表大全
2011-07-01 11:27 9141、用户: select username from db ... -
Oracle SEQUENCE
2011-07-01 11:25 10121.创建SEQUENCE(自增长列 与表无关) CRE ... -
16种oracle查询日期语句
2011-07-01 11:24 1471查询日期是使用oracle数据库过程中经 ... -
sql 2005 索引优化
2011-03-07 10:35 948(一)深入浅出理解索 ... -
oracle定义变量
2010-11-02 23:20 2700------------------------------ ... -
Oracle使用手册(一)---声明变量
2010-11-02 23:13 1755Oracle使用手册(一)---声明变量 /**//* --建 ... -
ORACLE函数大全
2010-09-21 13:11 936SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制 ... -
Oracle 中的 dual 表是干什么的
2010-09-21 11:29 1227dual是一个虚拟表,用来构成select的语法规则,orac ... -
SQL优化34条(一)
2010-09-21 11:27 801我们要做到不但会写SQL,还要做到写出性能优良的SQL,以下为 ... -
oracle联机日志文件恢复
2010-09-16 22:13 1099SQL> shutdown immediate ... -
Oracle 日志文件错误的处理
2010-09-16 22:12 1144转自:http://hi.baidu.com/da ... -
MySQL性能优化的最佳20+条经验
2010-09-16 16:05 861今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于We ... -
Oracle SQL优化34条(二)
2010-09-16 15:55 903(17) 用索引提高效率: 索引是表的一个概念部分,用来提高检 ... -
oracle客户端配置
2010-09-16 09:25 2242本帖最后由 落↓孤❤寒 于 2010-7-17 13:16 ...
相关推荐
在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...
Oracle游标是数据库编程中非常重要的一个概念,主要用于处理SQL查询的结果集。游标允许我们按行处理数据,逐条读取结果集,而不仅仅是一次性获取所有数据。在Oracle数据库中,游标对于复杂的事务处理、动态SQL以及...
总之,Oracle游标提供了处理查询结果的强大工具,使开发者能够灵活地在PL/SQL中操作数据。无论是隐式还是显式游标,都极大地增强了对数据库的交互能力,使得程序能根据查询结果进行适当的操作。理解并熟练运用游标是...
### Oracle游标使用详解 #### 一、Oracle游标简介 在Oracle数据库中,游标是一种重要的机制,用于处理查询结果集。它允许用户通过PL/SQL编程语言逐行访问和处理查询返回的数据记录。游标可以是显式定义的(即在...
### Oracle游标使用及实例详解 #### 一、Oracle游标概述 在Oracle数据库中,游标(Cursor)是一种用于处理SQL查询结果集的方式。它允许用户逐行地读取和处理查询结果,这对于需要对每一行数据进行特定操作的情况非常...
本文详细介绍了Oracle游标的使用方法,包括如何声明、打开游标,如何使用变量与类型匹配,以及如何处理异常情况等。通过这些知识点的学习,读者可以更好地理解和应用Oracle游标,提高开发效率和代码质量。此外,还...
通过本篇Oracle游标的使用大全,我们可以了解到Oracle数据库游标的类型、属性以及如何在PL/SQL中实现对数据集的逐行处理。这不仅有助于提升程序员的编程技能,也能使他们更深入地理解PL/SQL与Oracle数据库之间的交互...
### Oracle游标使用详解 #### 一、游标概述 游标是Oracle数据库中用于处理查询结果集的强大工具,尤其适用于需要逐行处理查询结果的情况。在Oracle中,游标可以分为两类:**显式游标**和**隐式游标**。 1. **隐式...
Oracle游标是数据库管理系统中的一种数据处理机制,它允许用户按需逐行处理查询结果,而不是一次性加载所有数据。在Java编程中,我们通常通过JDBC(Java Database Connectivity)来与Oracle数据库交互,其中游标扮演...
- 显式游标声明包含游标变量和关联的SQL查询,例如`cursor rowList is select * from chg_test_b b;` - 显式游标有四个关键状态:打开(Open)、关闭(Close)、获取(Fetch)和定位(Fetch into)。 - 在循环中...
Oracle游标是数据库管理系统中的一种重要机制,它允许程序员逐行处理查询结果集,而不仅仅是一次性获取所有数据。游标类似于C语言中的指针,能够灵活、高效地处理多条记录,尤其在需要循环处理或者根据当前行数据做...
Oracle游标是数据库编程中处理多行查询结果的重要工具,尤其在PL/SQL环境中,它允许程序员逐行处理查询结果。游标分为隐式游标和显式游标。 **隐式游标**是由PL/SQL自动管理的,通常在执行SELECT...INTO语句时使用...
### Oracle游标详解 在Oracle数据库中,游标(Cursor)是处理数据集的一个关键机制,主要用于执行查询并逐行处理结果集。游标可以被视为一个临时存储区,用于保存SELECT语句的结果集,允许程序对这些结果进行迭代...
本教程将深入介绍Oracle和SQL中的游标概念,以及如何通过实例来理解和应用它们。 首先,我们要明白什么是游标。游标(Cursor)是一个数据库系统组件,它允许我们在查询结果集中移动,一次处理一行数据。这在处理...
在 Declare 步骤中,需要声明游标变量和相应的类型。在 Open 步骤中,需要打开游标,指定游标的查询语句。在 Fetch 步骤中,需要从游标中读取数据。在 Close 步骤中,需要关闭游标,释放系统资源。 四、游标的属性 ...
以下是关于Oracle游标使用的一些关键知识点: 1. **游标的基本概念**: 游标(Cursor)是一种机制,它允许我们遍历和操作由SQL查询返回的结果集。通过游标,我们可以控制数据的读取顺序,一次只处理一行,或者在...
首先,让我们来理解Oracle游标。游标是数据库系统提供的一种机制,允许用户在结果集上进行迭代,一次处理一行数据。在PL/SQL中,游标用于检索SQL查询返回的结果集,并按需逐行处理。以下是一个简单的游标使用示例: ...