oracle游标:
1、显式游标声明:
cursor cur_emp;
有参数的游标:
cursor cur_emp(var_job in varchar2:='SALEMAN')
默认值有两种写法:var_job in varchar2:='SALEMAN'
var_job in varchar2 default 'SALEMAN'
打开有参数的游标:
open cur_emp('SALEMAN');
读取游标:
fetch cur_emp into 变量
关闭游标:
close cur_emp;
2、隐式游标:
示例程序:
begin
update emp
set sal=sal+100
where job='SALEMAN';
if SQL%notfound then
dbms_output.put_line('没有雇员的工资需要上调');
else
dbms_output.put_line('没有雇员的工资需要上调');
end if;
end;
/
游标的属性:
%found
%notfound
%rowcount --该属性记录了游标抽取过的记录数
%isopen
3、参数化游标:
cursor cur_emp
is
select *
from emp;
4、游标变量:
游标变量是一种引用类型。如果要使用引用类型,首先要申明该变量,然后相应的存储单元必须被分配。
type type_cur ref cursor; --声明变量类型
my_cur type_cur; --声明游标为引用类型
打开游标:
open <游标变量> for <SELECT语句>;
declare
type cur_type is ref cursor;
cur cur_type;
rec scott.emp%rowtype;
str varchar2(50);
letter char:= 'A';
begin
loop
str:= 'select ename from emp where ename like ''%'||letter||'%''';
open cur for str;
dbms_output.put_line('包含字母'||letter||'的名字:');
loop
fetch cur into rec.ename;
exit when cur%notfound;
dbms_output.put_line(rec.ename);
end loop;
exit when letter='Z';
letter:=chr(ascii(letter)+1);
end loop;
end;
5、有参数的游标:
create or replace procedure a
as
cursor b(c_id int)is select * from d where id=c_id;
begin
open b(111);
end;
PLSQL游标笔记
最新推荐文章于 2023-05-06 11:07:11 发布