簡單了解一下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;

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM