oracle如何关闭游标?
第一,如果游标以open打开的,则使用close关闭:
declare;
cursor mycursor is;
select * from emp for update;
myrecord emp%rowtype;
begin
open mycursor;
loop
fetch mycursor into myrecord;
exit when mycursor%notfound;
if (myrecord.sal=2000) then
update emp
set sal=2018
where current of mycursor;
end if;
end loop;
close mycursor;
commit;
end;
第二,使用for 循环的,则循环结束游标自动关闭:
declare
cursor mycursor is
select * from emp;
begin
for i in mycursor
loop
dbms_output.put_line(i.job);
end loop;
end;
oracle游标是数据库中一个命名的工作区,当游标被声明后,他就与一个固定的SQL想关联,在编译时刻是已知的,是静态的.它永远指向一个相同的查询工作区。
游标变量可以在运行时刻与不同的SQL语句关联,在运行时可以取不同的SQL语句.它可以引用不同的工作区。
oracle游标和游标变量是不能相互代替的。如何定义游标类型:
TYPE ref_type_name IS REF CURSOR [RETURN return_type];
声明游标变量:
cursor_name ref_type_name;