Oracle--plsql遊標創建和使用

遊標(cursor)是Oracle系統在內存中開闢的一個工作區,在其中存放SELECT語句返回的查詢結果。 


遊標的分類


隱式遊標

PL/SQL隱式建立並自動管理這一遊標。隱式遊標也叫做SQL遊標。 對於SQL遊標,不能對其顯式地執行OPEN、CLOSE和FETCH語句,但是可以使用遊標屬性從最近執行的SQL語句中獲取信息。




隱式遊標舉例:
VARIABLE rows_deleted VARCHAR2(30)
DECLARE
  v_deptno  NUMBER := 20;
BEGIN  
  DELETE FROM  emp
  WHERE  deptno = v_deptno;
  :rows_deleted := (SQL%ROWCOUNT ||' rows deleted.');
END;
/


返回所刪除行的數量 


顯式遊標

由程序員顯式說明及控制,用於從表中取出多行數據,並將多行數據一行一行單獨處理。


使用遊標時,select語句查詢的結果可以是單條記錄,多條記錄,也可以是零條記錄。
遊標工作區中,存在着一個指針(POINTER),在初始狀態它指向查詢結果的首記錄。
要訪問查詢結果的所有記錄,可以通過FETCH語句,進行指針的移動來實現。

使用遊標進行操作,包括定義遊標、打開遊標、提取數據以及關閉遊標幾步。




create table emp_test(
name varchar2(2000),
sal number);

create or replace procedure pro1 is
cursor pro_cousor is
select empno||ename,sal from emp;  --使用||拼接
v_name varchar2(2000);
v_sal number;
begin
open pro_cousor; --分號不能省略
  LOOP
  exit when pro_cousor%NOTFOUND;
   fetch pro_cousor into v_name,v_sal;
   insert into emp_test values(v_name,v_sal);
  end loop;
  close pro_cousor;
end;


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章