游标的几个属性:
%found:测试fetch语句是否有值(数据),有值就返回true,否则为false;
%notfound:判断游标是否没有数据或有效,没有就true,有等于false.
%rowcount:返回游标的数据行数|返回当前位置为止游标读取的记录行数;
%isopen:是测试游标是否打开。如果没有打开游标就使用fetch语句就提示错误;
游标与存储过程和函数相似,可以将对参数传递给游标并在查询中使用,
cursor cursor_name(parameter_name in date_type...) is
select_statement
定义的参数语法如下:
parameter_name[in]data_type[(:|default)value]
注意:与存储过程不同的时,游标只能接受传递的值,而不能返回值。
参数是定义数据类型,没有大小。
使用for进行游标循环时,可以不显式地打开和关闭游标----for循环会自动执行这些操作。
while进行游标循环时,要注意给fetch的放置;
在使用for循环时,它的变量相当于一个记录型变量,里面存储着此游标所存放的变量! 例子:
DECLARE
CURSOR MY_CURSOR
IS
SELECT SN,QTY FROM A;
BEGIN
FOR C_ROW IN MY_CURSOR
LOOP
UPDATE B SET B.QTY=C_ROW.QTY WHERE SN=C_ROW.SN;
END LOOP;
END;