--游标
一、显式游标
通过使用显式游标,不仅可以一行一行地处理SELECT语句的结果,而且可以更新或删除当前游标行的数据。
需要注意的是,如果通过游标更新或删除数据,在定义游标时必须要带有FOR UPDATE子句。
DECLARE
CURSOR emp_cursor IS SELECT * FROM emp FOR UPDATE;
BEGIN
FOR emp_record IN emp_cursor LOOP
IF emp_record.deptno=3 THEN
UPDATE emp SET sal=sal+200 WHERE CURRENT OF emp_cursor;
dbms_output.put_line('雇员名: '||emp_record.ename||',部门号:'||emp_record.deptno||
',原工资:'||emp_record.sal|| ',新工资:'||(emp_record.sal+200));
ELSE
dbms_output.put_line('姓名:'||emp_record.ename||',部门号:'||emp_record.deptno||',工资:'||
emp_record.sal);
END IF;
END LOOP;
END;
二、隐式游标
隐式游标,是指不显式标注定义、打开和关闭部分的游标。如,在循环体中:
BEGIN
FOR cur IN (SELECT name FROM dept) LOOP
DBMS_OUT.PUT_LINE(cur.name);
END LOOP;
END;
/
三、 Ref Cursor(动态游标):
1) 与隐式Cursor,显式Cursor的区别:Ref Cursor是可以通过在运行期间传递参数来获取数据结果集。而另外两种Cursor,是静态的,在编译期间就决定数据结果集。
2) Ref cursor的使用:
Type [Cursor type name] is ref cursor
Define 动态的Sql语句
Open cursor
操作数据---Fetch [Cursor name]
Close Cursor
--权限
1.如果给一个user用户授予一个表table的相应权限(INSERT UPDATE DELETE SELECT),然后又对该table表结构作相应的修改操作,
次时用户user对该表的权限将会丢失,必须重新为user授予权限。
--数组
在PL/SQL中是没有数组(Array)概念的。但是如果程序员想用Array的话,就得变通一下,用TYPE 和Table of Record来代替多维数组,一样挺好用的。
emp_type 就好象一个table 中的一条record 一样,里面有id, name,gender等。
emp_type_array 象个table, 里面含有一条条这样的record (emp_type),就象多维数组一样。
--单维数组
DECLARE
TYPE emp_ssn_array IS TABLE OF NUMBER
INDEX BY BINARY_INTEGER;
best_employees emp_ssn_array;
worst_employees emp_ssn_array;
BEGIN
best_employees(1) := '123456';
best_employees(2) := '888888';
worst_employees(1) := '222222';
worst_employees(2) := '666666';
FOR i IN 1..best_employees.count LOOP
DBMS_OUTPUT.PUT_LINE('i='|| i || ', best_employees= ' ||best_employees(i)
|| ', worst_employees= ' ||worst_employees(i));
END LOOP;
END;
--多维数组
DECLARE
TYPE emp_type IS RECORD
( emp_id employee_table.emp_id%TYPE,
emp_name employee_table.emp_name%TYPE,
emp_gender employee_table.emp_gender%TYPE );
TYPE emp_type_array IS TABLE OF emp_type INDEX BY BINARY_INTEGER;
emp_rec_array emp_type_array;
emp_rec emp_type;
BEGIN
emp_rec.emp_id := 300000000;
emp_rec.emp_name := 'Barbara';
emp_rec.emp_gender := 'Female';
emp_rec_array(1) := emp_rec;
emp_rec.emp_id := 300000008;
emp_rec.emp_name := 'Rick';
emp_rec.emp_gender := 'Male';
emp_rec_array(2) := emp_rec;
FOR i IN 1..emp_rec_array.count LOOP
DBMS_OUTPUT.PUT_LINE('i='||i
||', emp_id ='||emp_rec_array(i).emp_id
||', emp_name ='||emp_rec_array(i).emp_name
||', emp_gender = '||emp_rec_array(i).emp_gender);
END LOOP;
END;
用下面语句声明数组类型
type intarray is varry(30) of integer;
用下面语句声明一个数组变量
declare
A intarray;用下面语句声明数组类型
type intarray is varry(30) of integer;
用下面语句声明一个数组变量
declare
A intarray;用下面语句声明数组类型
type intarray is varry(30) of integer;
发表评论
-
大数据量转存(抽取、同步)
2012-11-22 01:23 715在大数据量的转存过程中,建议使用分批转存(不要一次转存过来 ... -
Oracle数据库优化要点总结
2012-10-22 10:33 711当oracle出现性能缓慢、 ... -
反向索引之应用
2012-10-19 15:54 765Oracle会自动为表的 ... -
PFILE与SPFILE差异
2012-10-17 11:56 7911.oracle实例启动时,寻找参数文件的顺序为 spf ... -
Oracle 分区简述
2012-10-12 12:01 689oracle8i起开始推出表分区的概念,最初只有范围分区、列表 ... -
Bitmap位图索引"高昂代价"与B-Tree比较
2012-10-10 08:54 690通过以下实验,来验证B ... -
关于Latch与Spin
2012-10-10 08:51 793latch 是一种轻量级用于保护oracle共享内存结构,用 ... -
完整的ORACLE的UTL_FILE的资料
2012-10-08 13:58 742转自:http://blog.csdn.net/alex197 ... -
RAID的类别使用(0,1,0+1,5)
2012-10-08 09:02 737raid0: 熟悉RAID 0的人都知道,它的读写速度是最高 ... -
oracle 裸设备使用和注解
2012-09-28 11:37 951看了一篇不错的的关于 ... -
EM无法登陆问题
2012-05-19 22:20 1285解决ORACLE的EM登录 这几 ... -
oracle的冷/热备份
2012-04-29 11:48 736一、 冷备份 冷 ... -
oracle安装、编译、参数配置
2011-06-09 19:23 700一、安装 按照以下标 ... -
Oracle个人笔记(SQL性能)2B
2011-06-09 19:20 6901.两者区别在哪?select trunc(sysdate,' ... -
start with...connect by prior用法
2011-06-09 19:18 679--当需要根据递归关系查询结果集时 start wit ... -
ORA-01157(表空间数据文件损坏需重建时)
2011-06-09 19:08 1033EM控制台报错如下: 处理步骤: 1. 备份该数据 ... -
工作积累(表空间、导出方案、触发器)1
2011-06-09 19:01 682--查看表空间、数据文件相关信息 1、查看表空间包含哪些数据 ... -
Oracle个人笔记(系统查询语句)3
2011-06-09 18:55 564查询锁的表的方法:(1 ... -
Oracle个人笔记(SQL性能)2A
2011-06-09 18:54 7371. ...group by (code,name); 性能要 ... -
Oracle个人笔记(基本规则)1
2011-06-09 18:52 6401.GRANT 权限 ON 表名(对象名) TO 用户;2.o ...
相关推荐
2. `next()` 函数:此函数将游标向数组的下一个元素移动。如果游标已经到达数组末尾,再次调用`next()` 不会改变游标位置。 在给出的代码示例中,我们看到如何使用`current()` 和 `next()` 实现类似`foreach`的循环...
在这个“整理:Oracle PL/SQL 入门+数组使用+游标+动态SQL”文档中,我们将深入探讨这四个关键概念。 1. Oracle PL/SQL入门: - PL/SQL的基本结构:PL/SQL由声明部分、执行部分和异常处理部分组成,用于定义变量、...
为了使游标颜色可配置,可以在JavaScript代码中定义一个颜色数组,与游标数组一一对应。这样,每当创建一个新的游标时,就可以从颜色数组中取出对应的颜色赋值给该游标。 考虑到实际应用中可能需要将滑条的当前状态...
WHILE v_counter (v_numRecords / 2 + 1) DO FETCH c1 INTO medianSalary; SET v_counter = v_counter + 1; END WHILE; CLOSE c1; ``` 在这个示例中,我们声明了一个游标`c1`,用于处理来自`staff`表的数据,并且...
2. **游标的添加与设置** - 要启用波形图上的游标,首先需要确保波形图允许游标。在波形图的属性对话框中,找到“游标”选项卡,勾选“启用游标”复选框。 - 默认情况下,LabVIEW提供单个游标,但可以设置为多游标...
2. **游标参数**:这些参数包括游标的颜色、形状、可见性以及精度。颜色和形状可以帮助用户更容易地区分不同游标;可见性可以控制游标是否显示在图形上;精度则决定了游标读数的分辨率。 3. **设置多个游标**:在...
2. **打开游标**:执行查询并将结果加载到游标中。 3. **提取数据**:从游标中逐行读取数据。 4. **关闭游标**:完成数据处理后关闭游标。 ##### 2. 声明游标 ```sql DECLARE CURSOR c_employees IS SELECT * FROM...
图2 游标图例 选择游标图例右键快捷菜单的“创建游标”,在图形中添加游标。创建游标时,游标模式定义了游标位置,共有3种模式:自由、单曲线和多曲线,如图3所示。同一图形中可创建多个游标。 自由模式不...
2. **打开游标**:使用`OPEN`命令来打开游标,使它准备好读取数据。 3. **获取数据**:通过`FETCH`命令从游标中获取一行数据到声明的变量中。 4. **处理数据**:在获取数据后,可以根据实际需求对数据进行各种处理。...
游标是 SQL 的一个内存工作区,由系统或用户以变量的形式定义。游标的作用就是用于临时存储从数据库中提取的数据块。在某些情况下,需要把数据从存放在磁盘的表中调到计算机内存中进行处理,最后将处理结果显示出来...
2. 隐式游标:隐式游标是在执行插入(insert)、删除(delete)、修改(update)和返回单条记录的查询(select)语句时由 PL/SQL 自动定义的。 四、游标的属性 游标的属性包括: 1. %ROWCOUNT:返回 FETCH 语句...
2. FOR UPDATE 选项的使用 FOR UPDATE 选项用于锁定游标结果集中指定的行,以防止其他用户对该行进行修改。该选项可以指定锁定的列,如果忽略了 OF 子句,那么表中选择的数据行都将被锁定。 3. 游标更新的语法 ...
在SolidWorks中创建游标卡尺的三维模型,首先要理解其组成部分和工作原理。游标卡尺通常包括主尺、副尺(游标)、固定爪、活动爪、锁紧装置以及读数系统。建模时,我们需要分别创建这些部分,并通过装配功能将它们...
2. **打开游标**(`OPEN`):使游标准备好读取数据。 3. **提取数据**(`FETCH`):从游标中获取一行数据,并将其存储到变量中。 4. **关闭游标**(`CLOSE`):释放游标当前持有的数据,但不销毁游标本身。 5. **...
游标是Oracle数据库中一个重要的概念,它是一种在内存中用于存储SQL查询结果的临时工作区域。使用游标可以方便地访问查询结果集中的每一行,这对于处理大量数据是非常有用的。游标主要分为两种类型:显式游标和隐式...
在"游标.txt"文件中,可能包含了更多关于Oracle游标的使用实例和技巧,包括游标的声明、动态游标、游标变量、游标表达式以及游标在存储过程和函数中的应用。这些内容可以帮助你更深入地理解和掌握Oracle游标,提高你...
2. **打开游标**:使游标准备好读取数据。 3. **从游标中获取数据**:通常使用`FETCH`命令来获取当前行的数据。 4. **循环处理数据**:使用循环结构来依次处理每一行数据。 5. **关闭游标**:释放与游标相关的资源。...
2. 打开游标:创建游标后,必须使用OPEN语句打开它,这样才能开始访问结果集。 3. 获取数据:通过FETCH语句,你可以从游标中提取一行数据,并将其存储到变量中。 4. 移动游标:根据需求,可以使用不同的移动命令,...
游标卡尺的使用规则主要包括两个方面:一是测量的准备工作,二是实际测量的过程。在测量前,需要确保游标卡尺的准确性和清洁度,然后选择合适的测量方式和单位。在实际测量过程中,需要将游标卡尺与被测量的物体对齐...