Oracle資料庫—遊標(cursor)例項
阿新 • • 發佈:2018-12-09
遊標
遊標是資料庫的一個數據緩衝區,存放SQL語句執行結果。
用於遍歷結果集和定位結果集的一條記錄。
遊標隱性屬性
隱性遊標屬性 | 返回值型別 | 意義 |
---|---|---|
%found | 布林型 | 從遊標的結果集中獲取記錄時,找到了記錄,為true |
%notfound | 布林型 | 從遊標的結果集中獲取記錄時,結果集中沒有記錄,為true |
%rowcount | 整型 | 代表DML語句成功執行的資料行數 |
%isopen | 布林型 | DML執行過程中為真,結束後為假 |
宣告遊標
cursor 遊標名稱 is select語句
使用遊標
for迴圈使用遊標
例:輸出emp表中的1004部門的員工 declare --宣告遊標,emp_corsor裡面儲存了select語句的多行記錄 cursor emp_corsor is select ename,ejob,esalary,ecomn from emp where did='1004'; --宣告變數c_row使用rowtype型別,儲存一條記錄 c_row emp_corsor%rowtype; begin --遍歷遊標emp_corsor,把獲取的每一條記錄儲存到c_row中 for c_row in emp_corsor loop dbms_output.put_line(c_row.ename||'-'||c_row.ejob||'-'||c_row.esalary||'-'||c_row.ecomn); end loop; end;
fetch使用遊標
----------必須先要開啟遊標,用完後需要關閉
開啟遊標
open 遊標名稱;
關閉遊標
close 遊標名稱;
declare --宣告遊標,emp_corsor裡面儲存了select語句的多行記錄 cursor c_emp is select esalary,ecomn from emp where did='1004'; --宣告變數c_row使用rowtype型別,儲存一條記錄 c_row c_emp%rowtype; begin --開啟遊標 open c_emp; --迴圈輸出資料 loop --將c_emp遊標中的記錄,提取一行記錄到c_row fetch c_emp into c_row; --%notfound 找不到時候返回ture,找到值返回false --結合exit使用,判讀是否提取到值,沒取到值就退出 --取到值c_job%notfound 是false --取不到值c_job%notfound 是true exit when c_emp%notfound; dbms_output.put_line(c_row.esalary||'-'||c_row.ecomn); end loop; --關閉遊標 close c_emp; end;