zoukankan      html  css  js  c++  java
  • PL/SQL — 隐式游标

    一、隐式游标的定义及其属性
    定义
    隐式游标由系统自动定义,非显示定义游标的DML语句即被赋予隐式游标属性。其过程由oracle控制,完全自动化。隐式游标的名称是SQL,不能对SQL游标显式地执行OPEN,FETCH,CLOSE语句。
    属性
    类似于显示游标,隐式游标同样具有四种属性,只不过隐式游标以SQL%开头,而显示游标以Cursor_name%开头通过SQL%总是只能访问前一个DML操作或单行SELECT操作的游标属性,用于判断DML执行的状态和结果,进而控制程序的流程

    SQL%ISOPEN   
    游标是否打开。当执行select into ,insert update,delete时,Oracle会隐含地打开游标,且在该语句执行完毕或隐含地关闭游标,因为是隐式游标,故SQL%ISOPEN总是false  
       
    SQL%FOUND  
    判断SQL语句是否成功执行。当有作用行时则成功执行为true,否则为false。
       
    SQL%NOTFOUND   
    判断SQL语句是否成功执行。当有作用行时否其值为false,否则其值为true。
       
    SQL%ROWCOUNT  
    在执行任何DML语句之前,SQL%ROWCOUNT的值都是NULL,对于SELECT INTO语句,如果执行成功,SQL%ROWCOUNT的值为,如果没有成功,SQL%ROWCOUNT的值为,同时产生一个异常NO_DATA_FOUND。
       
    二、演示
    1.SQL%FOUND的使用
    DECLARE
      v_empno emp.empno%TYPE:=&no;
    BEGIN
      UPDATE emp SET sal=sal+200 --根据给定的empno,更新一条记录
      WHERE empno=v_empno;
      IF SQL%FOUND OR SQL%COUNT>0 THEN  --使用SQL游标属性SQL%FOUND,SQL%COUNT
           COMMIT;
           DBMS_OUTPUT.PUT_LINE('SQL code is executed successful');
      ELSE
           DBMS_OUTPUT.PUT_LINE('The Employee is not exist');
           ROLLBACK;
      END IF;
    END;
     
    Enter value for no: 7788
    old   2:   v_empno emp.empno%TYPE:=&no;
    new   2:   v_empno emp.empno%TYPE:=7788;
    SQL code is executed successful
     
    PL/SQL procedure successfully completed

     

  • 相关阅读:
    团队-爬取豆瓣电影TOP250-成员简介及分工
    结对-贪吃蛇游戏-需求分析
    个人编程作业
    团队项目编程作业
    课后作业-阅读任务-阅读提问-1
    团队-爬虫豆瓣电影TOP250-成员简介及分工
    结对-英文词频检测程序-需求分析
    对软件工程课程的期望
    自我介绍
    作业0
  • 原文地址:https://www.cnblogs.com/toughhou/p/3778744.html
Copyright © 2011-2022 走看看