游標的for迴圈

2021-07-17 00:13:06 字數 1778 閱讀 1506

(1)for迴圈游標 (常用的一種游標)

--<1>定義游標

--<2>定義游標變數

--<3>使用for迴圈來使用這個游標

--前向游標 只能往乙個方向走

--效率很高

declare

--型別定義

cursor cc is select empno,ename,job,sal

from emp where job = 'manager';

--定義乙個游標變數

ccrec cc%rowtype;

begin

--for迴圈

for ccrec in cc loop

dbms_output.put_line(ccrec.empno||'-'||ccrec.ename||'-'||ccrec.job||'-'||ccrec.sal);

end loop;       

end;

值得注意的是, ccrec cc%rowtype;這個語句不是必須的。他可以在for迴圈中隱式宣告。

(2) fetch游標

--使用的時候 必須要明確的開啟和關閉

declare

--型別定義

cursor cc is select empno,ename,job,sal

from emp where job = 'manager';

--定義乙個游標變數

ccrec cc%rowtype;

begin

--開啟游標

open cc;

--loop迴圈

loop

--提取一行資料到ccrec中 

fetch cc into ccrec;         

--判斷是否提取到值,沒取到值就退出

--取到值cc%notfound 是false

--取不到值cc%notfound 是true 

exit when cc%notfound;

dbms_output.put_line(ccrec.empno||'-'||ccrec.ename||'-'||ccrec.job||'-'||ccrec.sal);            

end loop; 

--關閉游標

close cc;  

end;

(3)引數游標

按部門編號的順序輸出部門經理的名字

declare

--部門

cursor c1 is select deptno from dept;

--引數游標c2,定義引數的時候

--只能指定型別,不能指定長度  

--引數只能出現在select語句=號的右側

cursor c2(no number,pjob varchar2) is select emp.* from emp

where deptno = no and job=pjob;

c1rec c1%rowtype;

c2rec c2%rowtype;

--定義變數的時候要指定長度

v_job varchar2(20);

begin

--部門

for c1rec in c1 loop

--引數在游標中使用

for c2rec in c2(c1rec.deptno,'manager') loop

dbms_output.put_line(c1rec.deptno||'-'||c2rec.ename);

end loop; 

end loop; 

end; 

SQL迴圈游標的使用

今天搞的,幫同事查詢資料,先寫個觸發器,擷取http www.chinaroyalgroup.cn aspnet client system web 2 0 50727 dispbbs.asp?boardid 1 id 836裡的網域名稱 if exists select name from sys...

sql 游標的使用 游標FOR迴圈小例子

例子 顯示emp表所有雇員名及其工資 複製 如下 declare cursor emp cursor is select ename,sal from emp begin for emp record in emp cursor loop dbms output.put line 姓名 emp re...

TSQL 不用游標的迴圈方法

方法一 select into t1 from dbo.horsebase declare id int declare t2 table id int while exists select horsenumber from t1 begin select top 1 id horsenumber...