您的位置:首页 > 其它

隐式游标

2016-07-17 00:23 148 查看
显式游标主要是用于对查询语句的处理,尤其是在查询结果为多条记录的情况下;

对于非查询语句,如修改、删除操作,则由ORACLE系统自动地为这些操作设置游标并创建其工作区,这些由系统隐含创建的游标称为隐式游标,隐式游标的名字为SQL,这是由ORACLE系统定义的。

对于隐式游标的操作,如定义、打开、取值及关闭操作,都由ORACLE 系统自动地完成,无需用户进行处理。

用户只能通过隐式游标的相关属性,来完成相应的操作。

在隐式游标的工作区中,所存放的数据是最新处理的一条SQL语句所包含的数据,与用户自定义的显示游标无关。
隐式游标格式调用为:SQL%

注:INSERT, UPDATE, DELETE, SELECT 语句中不必明确定义游标。

隐式游标属性
属性

SELECT
INSERT
UPDATE
DELETE
SQL%ISOPEN
 FALSE
FALSE
FALSE
FALSE
SQL%FOUND
TRUE
有结果
 成功
成功
SQL%FOUND
FALSE
没结果
 失败
失败
SQL%NOTFUOND
TRUE
没结果
 失败
失败
SQL%NOTFOUND
FALSE
有结果
 成功
成功
SQL%ROWCOUNT
 返回行数,只为1
插入的行数
修改的行数
删除的行数
 

例子:

create or replace procedure p_test_cusor_hide is
v_rows number;
begin
DELETE FROM emp t WHERE t.deptno = '100';
--删除没有员工的部门
IF SQL%NOTFOUND THEN
DELETE FROM dept t WHERE t.deptno = '100';
END IF;
--更新数据
UPDATE emp t
SET t.sal = 30000
WHERE t.deptno = 90
AND t.job = 'AD_VP';
--获取默认游标的属性值
v_rows := SQL%ROWCOUNT;
DBMS_OUTPUT.PUT_LINE('更新了' || v_rows || '个雇员的工资');
--回退更新,以便使数据库的数据保持原样
ROLLBACK;
end p_test_cusor_hide;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: