1. 程式人生 > >簡單瞭解一下oracle中的顯示遊標和儲存過程

簡單瞭解一下oracle中的顯示遊標和儲存過程

遊標

  遊標主要分兩類動態和靜態遊標,靜態遊標是編譯時知道明確的select語句的遊標,靜態遊標分類兩種,顯示遊標和靜態遊標,這裡只說顯示遊標

顯示遊標

declare
   name emp.ename%type;
   sal emp.sal%type;                --宣告兩個變數
   cursor emp_currsor is            --宣告遊標
          select ename,sal from emp;
begin
  open emp_currsor;                --第一步開啟遊標
  loop
    
fetch 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);
     end
loop; 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;