天天看點

【PL/SQL 學習】隐式遊标學習

--oracle 會為每一個非顯示遊标的sql dml 語句都建立一個隐式遊标,隐式遊标也稱為sql 遊标。與顯示遊标不同,不能對一個隐式遊标執行open,close和fetch語句。oracle 隐式的打開sql遊标,處理sql遊标,然後再關閉該遊标。

declare

  vid t.object_id%type;

  vowner t.owner%type;

 begin

   select object_id ,owner into vid,vowner from t where rownum    if sql%isopen then

     dbms_output.put_line('it is not possiable');

     else

       dbms_output.put_line('vid is  '||vid||'  vowner is '||vowner);

       dbms_output.put_line('%isopen 的屬性為false');

   end if;

 end;

輸出為:

vid is  1  vowner is SYS

%isopen 的屬性為false

--和顯示遊标一樣,隐式遊标也有四大屬性%FOUND,%ISOPEN,%NOTFOUND,%ROWCOUNT.由于隐式遊标沒有名次,oracle提供了一種方法在屬性前面加 關鍵字 SQL,這樣我們就可以使用這些屬性了。

例子如下:

  rowsnum integer;

   select object_id ,owner into vid,vowner from t where rownum    rowsnum := sql%rowcount;

     dbms_output.put_line('vid is  '||vid||'  vowner is '||vowner);

     dbms_output.put_line('rowsnum is '||rowsnum);

     if sql%found then

        dbms_output.put_line('sql%found is true;');

        dbms_output.put_line('sql%found is false;');

     end if;

     if sql%notfound then

         dbms_output.put_line('sql%notfound is true;');

         dbms_output.put_line('sql%notfound is false;');

end;  

rowsnum is 1

sql%found is true;

sql%notfound is false;