Oracle中PL/SQL之常量和變數的定義、遊標(游標)的使用
阿新 • • 發佈:2018-11-05
PL/SQL常量和變數的定義
變數的資料型別:char、varchar2、date、number、boolean、long
常量定義:isshow boolean :=true;
說明變數:說明變數名、資料型別和長度後用分號結束說明語句。例:e_name varchar2(20);
引用變數:e_name的型別與emp表中ename列的型別一樣。例:e_name emp.ename%type;
記錄變數:emprec代表一行資料和型別與emp表的一行資料的型別一樣。例:emprec emp%rowtype;
記錄變數分量的引用:例:取員工的姓名(emprec.ename),ename要和emp表的列名一致。
PL/SQL遊標(游標)的使用
為什麼要使用遊標?在寫java程式中有集合的概念,那麼在pl/sql中也會用到多條記錄,這時我們就要用到遊標,遊標可以儲存查詢返回的多條資料。
語法:cursor 遊標名 [(引數名1 資料型別,引數名2 資料型別,......)] is select 語句;
例如:cursor c1 is select ename from emp;
遊標的使用步驟:
- 開啟遊標:open c1;(開啟遊標執行查詢)
- 取一行遊標的值:fetch c1 into e_name;(取一行到變數中)
- 如果是循環遊標,遊標退出迴圈的方式:exit when c1%notfound
- 關閉遊標:close c1;(關閉遊標釋放資源)
- 注意:上面的e_name必須與emp表中的ename列型別一致,需要定義e_name emp.ename%type;
遊標的屬性:%isopen(遊標是否開啟) %rocount(遊標影響的行數)
%found(遊標有記錄) %notfound(遊標沒有記錄)
- 沒有帶引數的遊標例子: 查詢並列印員工的姓名和薪水
declare
--定義遊標(查詢員工姓名和薪水)
cursor cemp is select ename,sal from emp;
pename varchar2(20);--說明變數
psal emp.sal%type;--引用變數
begin
--開啟遊標
open cemp;
--循環遊標
loop
--取當前記錄賦值給變數
fetch cemp into pename,psal;
--沒有取到記錄,退出迴圈
exit when cemp%notfound;
--列印員工姓名和薪水
dbms_output.put_line(pename||'的薪水是'||psal);
end loop;
--關閉遊標
close cemp;
end;
列印結果:
- 帶引數的遊標例子:查詢某個部門的員工姓名
declare
--形參
cursor cemp(dno number) is select ename from emp where deptno=dno;
pename emp.ename%type;--引用變數
begin
--實參(查詢20號部門的員工姓名)
open cemp(20);
loop
fetch cemp into pename;
exit when cemp%notfound;
dbms_output.put_line(pename);
end loop;
close cemp;
end;
列印結果: