標籤:
-- 聲明遊標;CURSOR cursor_name IS select_statement
--For 迴圈遊標
--(1)定義遊標
--(2)定義遊標變數
--(3)使用for迴圈來使用這個遊標
declare cursor yy is select * from mytest; c_row yy%rowtype;begin for c_row in yy loop dbms_output.put_line(c_row.id||‘-‘||c_row.name); end loop;end;
執行結果如
--Fetch遊標
--使用的時候必須要明確的開啟和關閉
declare cursor yy is select * from mytest; c_row yy%rowtype;begin open yy; loop fetch yy into c_row; exit when yy%notfound; dbms_output.put_line(c_row.id||‘-‘||c_row.name); end loop;
close yy;end;
--使用遊標和while迴圈來顯示所有部門的的地理位置(用%found屬性)
declare --遊標聲明 cursor csr_TestWhile is --select語句 select LOC from Depth; --指定行指標 row_loc csr_TestWhile%rowtype;begin --開啟遊標 open csr_TestWhile; --給第一行喂資料 fetch csr_TestWhile into row_loc; --測試是否有資料,並執行迴圈 while csr_TestWhile%found loop dbms_output.put_line(‘部門地點:‘||row_loc.LOC); --給下一行喂資料 fetch csr_TestWhile into row_loc; end loop; close csr_TestWhile;end;
--接收使用者輸入的部門編號,用for迴圈和遊標,列印出此部門的所有僱員的所有資訊(使用迴圈遊標)
--CURSOR cursor_name[(parameter[,parameter],...)] IS select_statement;
--定義參數的文法如下:Parameter_name [IN] data_type[{:=|DEFAULT} value]
declare CURSOR c_dept(p_deptNo number) is select * from emp where emp.depno=p_deptNo; r_emp emp%rowtype;begin for r_emp in c_dept(20) loop dbms_output.put_line(‘員工號:‘||r_emp.EMPNO||‘員工名:‘||r_emp.ENAME||‘工資:‘||r_emp.SAL); end loop;end;
oracle中的遊標