oracle pl sql 隐式游标SQL

EMP表在SCOTT用户下。用SCOTT/TIGER登录。

代码:

BEGIN
  UPDATE EMP SET ENAME = 'SMITH' WHERE EMPNO = 7369;
  DBMS_OUTPUT.put_line('SQL%ROWCOUNT = ' || SQL%ROWCOUNT);
  IF SQL%ISOPEN THEN
    DBMS_OUTPUT.put_line('SQL%ISOPEN');
  ELSE
    DBMS_OUTPUT.put_line('NOT SQL%ISOPEN');
  END IF;
  IF SQL%FOUND THEN
    DBMS_OUTPUT.put_line('SQL%FOUND');
  ELSE
    DBMS_OUTPUT.put_line('NOT SQL%FOUND');
  END IF;
  IF SQL%NOTFOUND THEN
    DBMS_OUTPUT.put_line('SQL%NOTFOUND');
  ELSE
    DBMS_OUTPUT.put_line('NOT SQL%NOTFOUND');
  END IF;
  EXCEPTION
    WHEN NO_DATA_FOUND THEN
      DBMS_OUTPUT.put_line('NO_DATA_FOUND');
    WHEN TOO_MANY_ROWS THEN
      DBMS_OUTPUT.put_line('TOO_MANY_ROWS');
END;

执行后输出:

SQL%ROWCOUNT = 1
NOT SQL%ISOPEN
SQL%FOUND
NOT SQL%NOTFOUND

下面转自百度百科: http://baike.baidu.com/link?url=DtDvH2_cQtm1mnxaocW2u0AkoNvlLPW-45ZqbymRlcrCMP7x0xICoWczmEIib2gchksAh2mgOjwQr_jYyVBZTq

%FOUND
指出了当PL/SQL代码最后从游标的结果集中获取记录时,找到了记录。
%NOTFOUND
指出了当PL/SQL代码最后从游标的结果集中获取记录时,结果集中没有记录。
%ROWCOUNT
返回当前时刻还没有从游标中获取的记录数量。
%ISOPEN
对于隐式游标而言,属性%ISOPEN的值总是false,这是因为隐式游标在DML语句执行时打开,结束时就立即关闭。

你可能感兴趣的:(oracle pl sql 隐式游标SQL)