您的位置:首页 > 数据库

PL/SQL高级应用的学习1

2008-09-04 19:54 507 查看

游标

l 什么是游标[/b][/b]
游标是一种PL/SQL的控制结构:可以对SQL语句的处理进行现式控制,便于对表的行数据逐条进行处理。
l 游标分类[/b][/b]
显示、隐式
l 游标的属性[/b][/b]
%FOUND
%ISOPEN
%NOTFOUND
%ROWCOUNT
游标的简单使用举例[/b]:[/b]
DECLARE
CURSOR mycur IS --申请一个内存区域,存放RESULT
SELECT * FROM PERSON;
myrecord person%rowtype; --声明一个记录,结构通person表。
begin
open mycur; --打开结果集
fetch mycur into myrecord; --将结果集中的当前游标所在的那条数据存放
在myrecord中
while mycur%found loop --%found判断,如果没有读取完,则执行循环
dbms_output.put_line(myrecord.id||','||myrecord.name);
fetch mycur into myrecord;
end loop;
close mycur; --关闭结果集
end;
/
带参数的游标使用举例:[/b][/b]
declare
cursor cur_para(myId varchar2) is --声明参数,指定类型即可。
select name from person where id=myId;
t_name person.name%type;
begin
open cur_para('1'); --写入游标参数
loop
fetch cur_para into t_name;
exit when cur_para%notfound;
dbms_output.put_line(t_name);
end loop;
close cur_para;
end;
/[/b]
使用[/b]FOR[/b]的带参数的游标:[/b][/b]
declare
cursor cur(mid varchar2) is --显示声明游标
select name from person where id=mid;
begin
dbms_output.put_line('*******结果集为:**********');
for i in cur('1') loop
dbms_output.put_line(i.name);
end loop;
end;
/
游标[/b]%ISOPEN[/b]使用举例:[/b][/b]
declare
tname person.name%type;
cursor cur(cid varchar) is
select name from person where id = cid;
begin
if cur%isopen then
dbms_output.put_line('游标被打开!');
else
open cur('1');
fetch cur into tname;
close cur;
end if;
dbms_output.put_line('游标已经被关闭'||tname);
end;
/
使用游标更新数据:[/b][/b]
declare
cursor cur is
select name from person for update; --只有for update才能更新
text varchar2(10);
begin
open cur;
fetch cur into text;
while cur%found loop
update person set name = name||'_t' where CURRENT OF CUR;--获取当前行
fetch cur into text;
end loop;
close cur;
end;
/

隐式游标[/b][/b]
begin
for cur in(select aid from a) loop
dbms_output.put_line(cur.aid);
end loop;
end;
/
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: