您的位置:首页 > 数据库

PLSQL游标笔记

2017-11-30 09:51 302 查看
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;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: