1. 程式人生 > >PLSQL--遊標

PLSQL--遊標

reat res exit resultset loop put iso creat from

1.遊標

  1.1什麽是遊標

  用於臨時存儲一個查詢返回的多行數據(結果集,類似於Java的JDBC連接返回   的 ResultSet集合),通過遍歷遊標,可以逐行訪問處理該結果的數據。

  遊標的使用方式:聲明--->打開-->讀取--->關閉

  1.2語法

  遊標聲明:

  CURSOR 遊標名[(數據列表)] IS 查詢語句;

  遊標的打開:

  OPEN遊標名;

  遊標的取值:

  FETCH 遊標名 INTO 變量列表;

  遊標的關閉:

  CLOSE 遊標名;

  1.3 遊標的屬性

    %FOUND 變量最後從遊標中獲取記錄的時候,在結果集中找到了記錄。

    %NOTFOUNT 變量最後從遊標中獲取記錄的時候,在結果集中沒有找到記錄。

   %ROWCOUNT 當前時刻已經從遊標中獲取的記錄數量。

%ISOPEN 當前時刻已經從遊標中獲取的記錄數量。

  示例1(不帶參數的遊標):使用遊標查詢emp表中所有員工的姓名和工資,並將其依次打印出來

  

 1 -- Created on 2018/8/23 by MENGMENG.CHEN 
 2 --使用遊標查詢emp表中所有員工的姓名和工資,並將其依次打印出來
 3 declare 
 4   -- 聲明遊標
 5   CURSOR c_emp IS SELECT
ENAME,SAL FROM EMP; 6 --聲明變量接收遊標中的數據 7 v_name emp.ename%TYPE; 8 v_sal emp.sal%TYPE; 9 begin 10 --打開遊標 11 OPEN c_emp; 12 13 --遍歷遊標 14 LOOP 15 --獲取遊標中的數據,如果有的話就賦值給變量 16 FETCH c_emp INTO v_name,v_sal; 17 EXIT WHEN c_emp%NOTFOUND; 18 DBMS_OUTPUT.put_line(姓名: ||
v_name || 薪水: || V_SAL); 19 END LOOP; 20 21 --退出遊標 22 23 end;

  運行結果:

技術分享圖片

示例2(帶參數的遊標):使用遊標查詢emp表中員工號=7839的員工姓名和工資,並將其依次打印出來

 1 -- Created on 2018/8/23 by MENGMENG.CHEN 
 2 --使用遊標查詢emp表中員工號=7839的姓名和工資,並將其依次打印出來
 3 declare 
 4   -- 聲明遊標
 5   CURSOR c_emp(v_empno emp.empno%TYPE) IS SELECT ENAME,SAL FROM EMP WHERE empno = v_empno;
 6   --聲明變量接收遊標中的數據
 7   v_name emp.ename%TYPE;
 8   v_sal   emp.sal%TYPE;
 9 begin
10   --打開遊標
11   OPEN c_emp(7839);
12   
13   --遍歷遊標
14   LOOP
15     --獲取遊標中的數據,如果有的話就賦值給變量
16     FETCH c_emp INTO v_name,v_sal;
17     EXIT WHEN c_emp%NOTFOUND;
18        DBMS_OUTPUT.put_line(姓名: || v_name || 薪水: || V_SAL);
19     END LOOP;
20     
21   --退出遊標
22   
23 end;

運行結果:

技術分享圖片

PLSQL--遊標