在通过select语句查询是,返回的结果通常是多行记录组成的集合。为此SQL提供了游标机制。游标可以充当指针的作用,使应用程序设计语言一次只能处理查询记过中的一行。在Oracle中,可以使用隐式和显示两种游标。在pl/sql 中程序所有发出的DML和select语句,Oracle都会自动声明“隐式游标”。为了处理由select语句返回的一组记录,需要在pl/sql程序中申明和处理“显示游标”。
隐式游标
游标的主要属性如下:
%found 布尔型属性,如果SQL语句至少影响一行,则为true,否则为false
%notfound 布尔型属性,与%found相反
%isopen 布尔型属性,当游标已打开时返回true,游标关闭为false
%rowcount 数字型属性,返回受sql语句影响的行数
如果执行了一个select语句则可以通过SQL%ROWCONT来检查受影响的行数,还可以通过SQL%FOUND属性值是否为true,以检查SQL语句是否影响到了任何行。
- <span style="font-size:18px;"> begin
- update emp set sal=850 where ename='SMITH';
- if sql%notfound then
- dbms_output.put_line('未更行任何记录');
- else
- dbms_output.put_line('更新记录'||sql%rowcount||'条');
- end if;
- end;</span>
在使用游标的属性值时,需要注意一个重要的事项。游标的属性信息总是反映最新的SQL语句处理结果。因此,当在一个程序块中出现多个sql语句时,需要考虑在何处检查属性值
- declare
- emp_row emp%row