PLSQL游標的使用

2021-07-26 11:13:29 字數 1833 閱讀 7138

1.使用無參游標cursor,查詢所有員工的姓名和工資【如果需要遍歷多條記錄時,使用游標cursor,無記錄找到使用cemp%notfound】

declare

--定義游標

cursor cemp is select ename,sal from emp;

--定義變數

vename emp.ename%type;

vsal emp.sal%type;

begin

--開啟游標,這時游標位於第一條記錄之前

open cemp;

--迴圈

loop

--向下移動游標一次

fetch cemp into vename,vsal;

--退出迴圈,當游標下移一次後,找不到記錄時,則退出迴圈

exit when cemp%notfound;

--輸出結果

dbms_output.put_line(vename||'--------'||vsal);

end loop;

--關閉游標

close cemp;

end;

/

2.使用帶參游標cursor,查詢10號部門的員工姓名和工資

declare

cursor cemp(pdeptno emp.deptno%type) is select ename,sal from emp where deptno=pdeptno;

pename emp.ename%type;

psal emp.sal%type;

begin

open cemp(&deptno);

loop

fetch cemp into pename,psal;

exit when cemp%notfound;

dbms_output.put_line(pename||'的薪水是'||psal);

end loop;

close cemp;

end;

/

3.使用無參游標cursor,真正給員工漲工資,analyst漲1000,manager漲800,其它漲400,要求顯示編號,姓名,職位,薪水

declare

cursor cemp is select empno,ename,job,sal from emp;

pempno emp.empno%type;

pename emp.ename%type;

pjob emp.job%type;

psal emp.sal%type;

begin

open cemp;

loop

fetch cemp into pempno,pename,pjob,psal;

--迴圈退出條件一定要寫

exit when cemp%notfound;

if pjob='analyst' then

update emp set sal = sal + 1000 where empno = pempno;

elsif pjob='manager' then

update emp set sal = sal + 800 where empno = pempno;

else

update emp set sal = sal + 400 where empno = pempno;

end if;

end loop;

commit;

close cemp;

end;

/

plsql 游標的使用

1 游標實際上就是乙個集合 2 游標的屬性 found 取到值則返回true 沒取到值則返回false notfound 沒取到值則返回true 取到值則返回false isopen 游標是否開啟 rowcount 影響的行數 3 游標數的限制 預設在同乙個會話中,可以開啟300個游標。4 無引數的...

PL SQL 引用游標的使用

使用引用游標的情景 1.你可能有這樣的需求 讓乙個函式返回乙個游標,然後宿主函式呼叫並使用這個游標 2.open cursor name for v sql statement 當時用動態sql進行多行查詢時,因為此處的cursour name必須是乙個游標變數,所以需要使用。h還可檢視例子 cre...

PL SQL 中顯式游標的使用

一般在pl sql中使用顯式游標有如下的過程 我們以輸出employees表中員工的姓名為例,進行以下的操作 declare v emp first name employees.first name type v emp last name employees.last name type 宣告游...