PLSQL--遊標
阿新 • • 發佈:2018-08-23
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 SELECTENAME,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--遊標