--設定伺服器端輸出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...