游标
逐行提取查询结果,所以返回结果可以超过一行
%NOTFOUND --如果FETCH语句失败,则该属性为"TRUE",否则为"FALSE";
%FOUND --如果FETCH语句成功,则该属性为"TRUE",否则为"FALSE";
%ROWCOUNT --返回游标当前行的行数;
1.隐式游标
--查看修改数据后会影响到多少行数据
begin
update emp set sal=sal+100 where deptno=&deptno;
dbms_output.put_line(sql%rowcount||'个员工工资涨了100元');
end;
--查看修改数据后是否执行成功
begin
update emp set sal=sal-100 where deptno=&deptno;
if sql%found then
dbms_output.put_line('降薪成功');
else
dbms_output.put_line('降薪失败');
end if;
end;
2.显式游标
静态:在定义游标的时候就已经确定了它要执行的sql语句
语法:CURSOR <游标名> IS <SELECT 语句> [FOR UPDATE | FOR UPDATE OF 字段];
操作:OPEN <游标名> --打开游标
FETCH <游标名> INTO 变量1,变量2,变量3,…变量n,;
或者
FETCH <游标名> INTO 行对象; --取出游标当前位置的值
CLOSE <游标名>