遊標的分類
隱式遊標
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;