oracle 游标用法_oracle游标用法

oracle 游标用法_oracle游标用法Oracle中使用游标详解一、使用游标对于DML语句和单行select into ,oracle自动分配隐形游标。处理select返回多行语句,可以使用显式游标。使用显示游标处理多行数据,也可使用SELECT..BU

Oracle中使用游标详解   一、使用游标   对于DML语句和单行select into ,oracle自动分配隐形游标。处理select返回多行语句,可以使用显式游标。   使用显示游标处理多行数据,也可使用SELECT..BULK COLLECT INTO 语句处理多行数据.   1.定义游标   cursor cursor_name is select_statement;   2.打开游标   执行对应的SELECT语句并将SELECT语句的结果暂时存放到结果集中.   open cursor_name;   3.提取数据   打开游标后,SELECT语句的结果被临时存放到游标结果集中,使用FETCH语句只能提取一行数据   通过使用FETCH..BULK COLLECT INTO语句每次可以提取多行数据 1 2 3     (1)游标中使用fetch..into语句:只能处理一行数据,除非用循环语句 1 2 3 4 5 6 7 8 9 10 11 12   或 1 2 3 4 5 6 7 8 9 10 11 12   (3)基于游标定义记录变量 1 2 3 4 5 6 7 8 9 10 11   4.关闭游标   1   5.游标属性   用于返回显示游标的执行信息,包括%isopen,%found,%notfound,%rowcount %isopen:确定游标是否打开 %found:检查是否从结果集中提取到了数据 %notfound:与%found行为相反。 %rowcount:返回当前行为止已经提取到的实际行数   no_data_found和%notfound的用法是有区别的,小结如下1)SELECT. . . INTO 语句触发 no_data_found;   2)当一个显式光标(静态和动态)的 where 子句未找到时触发 %notfound;   3)当UPDATE或DELETE语句的where 子句未找到时触发 sql%notfound;   4)在光标的提取(Fetch)循环中要用 %notfound 或%found 来确定循环的退出条件,不要用no_data_found。   6.参数游标   注意:定义参数游标时,游标参数只能指定数据类型,而不能指定长度。 1 2 3 4 5 6 7 8 9 10 11 12   二、for循环遍历,实现遍历游标最高效方式。   使用FOR循环时,ORACLE会隐含的打开游标,提取游标数据并关闭游标。   每循环一次提取一次数据,在提取了所有数据后,自动退出循环并隐含的关闭游标。   1.使用游标FOR循环 1 2 3 4 5 6 7 8   2.在游标FOR循环中直接使用子查询 1 2 3 4 5   
自媒体培训   三、使用游标更新或删除数据   要通过游标更新或删除数据,在定义游标时必须要带有FOR UPDATE子句 1 for update子句:用于在游标结果集数据上家行共享锁,防止其他用户在相应行执行DML操作 of子句:确定哪些表要加锁,没有OF子句,则在所引用的全部表上加锁 nowait子句:用于指定不等待锁 必须在UPDATE后DELETE语句中引用WHERE CURRENT OF子句   update table_name set column=.. where current of cursor_name;   delete table_name where current of cursor_name; 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15   四、通过bulk collect减少loop处理的开销   将查询结果一次性加载到集合中,而不是一条一条的加载。   (1)在显示游标中,使用FETCH..BALK COLLECT INTO语句提取所有数据 1 2 3 4 5 6 7 8 9 10 11 12   (2)游标中使用FETCH..BULK COLLECT INTO ..LIMIT语句提取部分数据 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20   五、使用游标变量   PL/SQL的游标变量中存放着指向内存地址的指针.   1.游标变量使用步骤   包括定义游标变量,打开游标,提取游标数据,关闭游标等四个阶段   1.1定义ref cursor类型和游标变量 1 2 3     当指定RETURN子句时,其数据类型必须是记录类型,不能在包内定义游标变量   1.2打开游标 1   1.3提取游标数据 1 2 3     1.4关闭游标变量 1   2.游标变量使用示例   1、在定义FEF CURSOR类型时不指定RETURN子句   在打开游标时可以指定任何的SELECT语句 1 2 3 4 5 6 7 8 9 10 11 12 13   2、在定义REF CURSOR类型时指定RETURN子句   在打开游标时SELECT语句的返回结果必须与RETURN子句所指定的记录类型相匹配. 1 2 3 4 5 6 7 8 9 10 11 12 13 14

2024最新激活全家桶教程,稳定运行到2099年,请移步至置顶文章:https://sigusoft.com/99576.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。 文章由激活谷谷主-小谷整理,转载请注明出处:https://sigusoft.com/88429.html

(0)
上一篇 2024年 6月 22日
下一篇 2024年 6月 22日

相关推荐

关注微信