plsql游標使用學習

2021-06-27 13:33:43 字數 1687 閱讀 4788

--設定伺服器端輸出plsql執行結果

set serveroutput on;

--宣告乙個顯式游標:宣告游標,開啟游標,讀取游標,關閉游標

declare--宣告部分

cursor myfirstcursor is select * from emp;

myrowtype emp%rowtype;--宣告乙個查詢出來的行的型別

begin

open myfirstcursor;

fetch myfirstcursor into myrowtype;--把游標指向的結果集資料裝載到自定義的行型別中

while myfirstcursor%found loop--執行while迴圈

dbms_output.put_line('編碼為:'||myrowtype.empno||'名字為:'||myrowtype.ename||'查詢到的數量是:'||myfirstcursor%rowcount);

fetch myfirstcursor into myrowtype;--將結果集資料輸出到伺服器段

end loop;

dbms_output.put_line('編碼為:'||myrowtype.empno||'名字為:'||myrowtype.ename||'查詢到的數量是:'||myfirstcursor%rowcount);

close myfirstcursor;

end;

--隱式游標:主要用於處理資料操縱語言的執行結果,當使用隱式游標屬性時需要在隱式游標屬性前加入sql%rowcount;

begin

update emp set sal=sal*1.2 where job like '%sale%';

if sql%notfound then

dbms_output.put_line('沒有影響任何人的資料');

else

dbms_output.put_line('漲工資的員工人數有:'||sql%rowcount);

end if;

end;

使用for語句迴圈游標:

在使用for語句迴圈游標時會自動將for的計數器轉換成record型別

格式如下:

begin

for recordype in(select * from emp where sal>1000)

loop

dbms_output.put_line(recordtype.ename);

end loop;

異常處理:--異常處理

declare

vname varchar2(10);

vsal number(10,2);

begin

select ename,sal into vname,vsal from emp where deptno=10;

if sql%found then

dbms_output.put_line('哈哈,我找到了資料');

end if;

exception

when too_many_rows then

dbms_output.put_line('查詢出來太多資料,不正確,請您重新修改!');

when no_data_found then

dbms_output.put_line('咳咳,沒有查詢出資料,真是愁人啊~~~');

end;

PL SQL 游標使用

set serveroutput on declare 定義游標,預設輸入引數值為4000 cursor cur emp var sal in varchar2 4000 is select empno,ename,job from emp where sal var sal 定義record變數,...

pl sql游標 PL SQL游標 1

pl sql游標 游標 隱式游標 sql返回單行。由oracle server建立。顯式游標 sql重新調整多個記錄行。由使用者建立。游標生命週期 宣告 開啟 獲取 檢查最後一條記錄 關閉 基本語法 declare cursor cursorname param1,param2,is select ...

PLSQL游標的使用

1.使用無參游標cursor,查詢所有員工的姓名和工資 如果需要遍歷多條記錄時,使用游標cursor,無記錄找到使用cemp notfound declare 定義游標 cursor cemp is select ename,sal from emp 定義變數 vename emp.ename ty...