簡單瞭解一下oracle中的顯示遊標和儲存過程
阿新 • • 發佈:2018-11-11
遊標
遊標主要分兩類動態和靜態遊標,靜態遊標是編譯時知道明確的select語句的遊標,靜態遊標分類兩種,顯示遊標和靜態遊標,這裡只說顯示遊標
顯示遊標
declare name emp.ename%type; sal emp.sal%type; --宣告兩個變數 cursor emp_currsor is --宣告遊標 select ename,sal from emp; begin open emp_currsor; --第一步開啟遊標 loopfetch emp_currsor into name,sal; --fetch提取遊標 exit when emp_currsor%notfound; --判斷遊標是否還有值 dbms_output.put_line('第'||emp_currsor%rowcount||'個僱員'||name||sal); end loop; close emp_currsor; --最後一步關閉遊標 end;
顯示遊標屬性
%found:只有在DML語句影響一行或者多行時,%found屬性才返回true
%notfound:如果沒有影響任何行返回true
%rowcount:屬性返回DML語句影響的行數.如果DML語句沒有影響任何行,則%rowcount屬性返回0
%isopen:返回遊標是否已被開啟
迴圈讀取遊標
declare cursor cu_emp is select * from emp; lr_emp cu_emp%rowtype; --宣告變數 begin for lr_emp in cu_emp loop dbms_output.put_line('empName: ' || lr_emp.ename); endloop; end;
結果:
儲存過程
--建立儲存過程 create or replace procedure proc_getEmpList(v_empno number,vara varchar) is --遍歷遊標 cursor cu_emp is select * from emp; lr_emp cu_emp%rowtype; --宣告變數 begin dbms_output.put_line('v_empno: ' || v_empno||'vara:'||vara); for lr_emp in cu_emp loop dbms_output.put_line('empName: ' || lr_emp.ename); end loop; end; --呼叫 begin proc_getEmpList(123,'00'); end;