(1) 对于从数据库中提取多行数据,就需要使用显式Cursor。显式Cursor的属性包含:
游标的属性 返回值类型 意 义
%ROWCOUNT 整型 获得FETCH语句返回的数据行数
%FOUND 布尔型 最近的FETCH语句返回一行数据则为真,否则为假
%NOTFOUND 布尔型 与%FOUND属性返回值相反
%ISOPEN 布尔型 游标已经打开时值为真,否则为假
(2) 对于显式游标的运用分为四个步骤:
定义游标—Cursor [Cursor Name] IS;
打开游标—Open [Cursor Name];
操作数据—Fetch [Cursor name]
关闭游标—Close [Cursor Name],这个Step绝对不可以遗漏。
SQL语句示例
Set serveroutput on;
–定义游标
declare cursor mycursor is
select sourcelogid from edi_task ps where processflag=‘0’ order by sourcelogid;
begin
open mycursor;
fetch mycursor into v_logid;–v_logid为已声明的变量
while mycursor % FOUND loop
–对于获取的游标操作的逻辑
begin
UPDATE PLUGIN.EDI_CUSTOM A SET SYMBOL = 6 WHERE LOGID = V_LOGID AND SYMBOL = 9 ;
commit;
end
fetch mycursor into v_logid;
end loop;
commit;
close mycursor;
exception
when OTHERS then
ROLLBACK;
v_sqlerr:=sqlerrm;
DBMS_OUTPUT.PUT_LINE(v_sqlerr);
commit;
return;
end;
end;