Oracle中使用游标

275 阅读1分钟

游标的几个属性:

%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;