oracle 存儲過程使用游標返回結果集和游標的兩種for循環


游標定義和使用需要4個步驟:

1、聲明游標     myCur Sys_Refcursor;

2、打開游標     open myCur for select * from students;

3、提取數據    可以使用fetch也可以使用for循環;

4、關閉游標    close myCur;

fetch myCur into name,age;

exit when myCur%NOTFOUND;
    if myCur%found then
      dbms_output.put_line('讀取的數據:學生姓名為:' || name || '元, 年齡為: ' ||age);
    end if;
  end loop;

使用for循環:

for myCur_record in myCur loop

dbms_output.put_line('讀取的數據:學生姓名為:' || name || '元, 年齡為: ' ||age);
    end loop; 

此時myCur_record 為隱含定義的記錄變量,循環的執行次數與游標取得的數據的行數一致。

用於游標判斷的4個屬性:

1. %ROWCOUNT   整型  獲得FETCH語句返回的數據行數    

2. %FOUND  布爾型 最近的FETCH語句返回一行數據則為真,否則為假   

3. %NOTFOUND   布爾型 與%FOUND屬性返回值相反   

4.  %ISOPEN 布爾型 游標已經打開時值為真,否則為假 。

使用sys_refcursor游標返回記錄集:

create or replace procedure calprice(resCur out Sys_Refcursor) is

  myCur Sys_Refcursor;

begin
   open myCur for
    select * from student;

 resCur := myCur;

此時將結果集保存在resCur游標中,其他函數或存儲過程調用的時候再使用fetch或for語句提取記錄。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM