1、游标的声明
块的DECLARATION部分给游标命名,并为他配备一个SELECT语句,就完成了游标的定义。
具体语法
CURSOR cursor_name [parameter_list]
[RETURN return_type]
IS query
[FOR UPDATE [OF (column_list)] [NOWAIT]];
2、游标的打开
OPEN author_cur1;
如果带有参数的列表的游标
OPEN author_cur1(50);
在这种情况下,传递给OPEN命令的值和绑定变量的值已经确定。这个值是不会在发生更改的,因此结果集也不会变化,除非将游标关闭然后重新打开。
3、记录的获取
语法:
fetch cursor_name into variable_name(s) | PL/SQL_record;
只有一列的
fetch author_cur into v_rowid;
游标返回多行记录,并且需要多个变量时,大致如下
fetch author_cur into v_first_name,v_last_name;
在这种情况下,游标author_cur的select语句中必须含有first_name,lase_name这两列,而且顺序不能颠倒。游标不能再包含其它列。
如果游标包含一条完整记录,就可以使用PL/SQL记录来代替变量:
declare
v_author authors%rowtype;
begin
…
fetch author_cur into v_author;
…
v_author变量包含了一条完整记录,v_author.column_name获取每个列的值。
4、游标的关闭
close cursor_name;
其中cursor_name是已经处于打开状态的游标的名称。
5、游标的属性
%bulk_exceptions
%bulk_rowcount
%found
%isopen
%notfound
%rowcount
6、使用loop遍历游标
loop
fetch auth_cur into v_author;
exit when auth_cur%notfound;
…
end loop
fetch auth_cur into v_author;
while auth_cur%found loop
..
fetch auth_cur into v_author;
end loop
for v_author in auth_cur
loop
…
end loop
Tags: plsql
Leave a Reply
You must be logged in to post a comment.
近期评论