PL/SQL 游标详解
时间:2022-03-10 17:19
刚打开游标的时候,是位于一个空行,要用fetch into 才能到第一行。
只是要注意用更新游标的时候,不能在游标期间commit.
否则会报ORA-01002: fetch out of sequence就是COMMIT导致的错误。
在打开有for
update的cursor时,系统会给取出的数据加上排他锁(exclusive), 这样在这个锁释放前其他用户不能对这些记录作update、delete和加锁。
而我一旦执行了commit,锁就释放了,游标也变成无效的,再去fetch数据时就出现错误了。因而要把commit放在循环外,等到所有数据处理完成后再commit,然后关闭cursor
隐含游标
--------
又名SQL游标,用于处理单行select
into 和 DML语句。
SQL%ISOPEN
SQL%FOUND
SQL%NOTFOUND
SQL%ROWCOUNT
显示游标
--------
用户处理select语句返回的多行数据。
select语句返回多行数据处理方式:[1]显示游标;[2]select
... bulk collect into 集合变量...;
【1】显示游标属性
[1] %ISOPEN 检测游标是否打开。
[2]
%FOUND 检测游标结果集是否存在数据。
[3] %NOTFOUND 是否不存在数据。
[4] %ROWCOUNT
游标已提取的实际行数
【2】使用显示游标
[1] 定义游标
CURSOR cursor_name IS
select_statement;
[2] 打开游标
OPEN cursor_name;
[3] 提取数据
FECTH
cursor_name INTO variable,...
[4] 关闭数据
CLOSE cursor_name;
使用标量变量:
PL/SQL 游标详解,布布扣,bubuko.com