游标用于处理查询结果集中的数据
Oracle中提供了两种游标类型,它们是:
静态游标:静态游标是在编译时知道Select语句的游标。静态游标又分为两种类型,隐式游标和显式游标。
REF游标:很多时候用户需要为游标使用的查询直到运行的时候才能确定,可以使用REF游标(引用游标)和游标变量满足这个要求。为了使用引用游标,必须声明游标变量。 有两种类型的REF游标,强类型REF游标和弱类型REF游标。
1、隐式游标:PL/SQL为所有SQL数据操纵语句(包括返回一行的Select)隐式声明游标。用户不能直接命名和控制此类游标。隐式游标名为SQL。
隐式游标属性:
(1)、%FOUND 只有在DML语句影响一行或多行时,%FOUND属性才返回TRUE。
示例1:如果有行被更新,SQL%FOUND就返回真并打印相应信息。
beginupdate emp set sal=sal+8 where empno=7900;
if sql%found then
dbms_output.put_line('表已更新');
else
dbms_output.put_line('编号未找到');
end if;
end;
(2)、%NOTFOUND 此属性与%FOUND属性的作用正好相反。如果DML语句没有影响任何行,则%NOTFOUND属性返回TRUE。
(3)、%ROWCOUNT 此属性返回DML语句影响的行数。如果DML语句没有影响任何行,则%ROWCOUNT属性将返回0。
示例2:使用%ROWCOUNT属性。
begin
update emp set sal=sal+8 where empno=7900;
if sql%found then
dbms_output.put_line('表已更新,更新了'||SQL%ROWCOUNT||'行');
else
dbms_output.put_line('编号未找到');
end if;
end;
(4)、%ISOPEN 此属性返回游标是否已打开的值。隐式游标的%ISOPEN 属性始终为FALSE。
2、显式游标
使用显式游标的4个步骤是:
(1)、声明游标。
(2)、打开游标。
(3)、从游标中获取记录
(4)、关闭游标
声明显式游标语法:
CURSOR cursor_name [(parameter [,parameter]...)]
[RETURN return_type] IS select_statement;
其中:cursor_name指游标的名称。
parameter用于为游标指定输入参数。
return_type定义游标提取的行的类型。
select_statement指游标定义的查询语句。
打开游标语法:
OPEN cursor_name [(parameters)];
从游标中获取记录语法:
FETCH cursor_name INTO variables;
其中:cursor_name指游标的名称。 variables是变量名。
关闭游标语法:CLOSE cursor_name;
此文章转载自北大青鸟:http://www.bjaccpedu.com/wsxt/5131/