-
2—2 引用型變量和記錄型變量查看全部
-
oracle連接
查看全部 -
declare 聲明查看全部
-
PLSQL程序設計綜合案例
程序設計方法
瀑布模型:
需求分析
設計:概要設計,詳細設計
編碼:coding
測試:testing
上線部署
編寫程序,方法:
1.考慮需要用到什么sql語句
2.考慮會需要哪些變量,考慮變量的初始值,最終值如何得到
查看全部 -
自定義例外
定義變量,類型是exception
使用raise拋出自定義例外
--------------------------實例如下-----------------------------------------------------------------------------------------------------------------
declare
--聲明游標
cursor cemp(dno number) is select ename from emp where deptno=dno;
--定義變量
pname emp.ename%type;
--定義特殊異常變量
no_emp_found exception;
begin
--打開游標
--20為部門號,是游標傳入的形參對應的實參
open cemp(50);
--游標讀取第一行數據
fetch cemp into pname;
--判斷游標是否有讀取到數據
if cemp%notfound then?
--沒有,則使用raise關鍵字將自定義異常拋出
raise no_emp_found;
--如果有數據,則進行循環(huán)讀取并打印出來
else
loop
--注意此處打印語句,如果移到fetch后,則打印的結果會少一個,
--因為前面游標已經讀取了一條,不在循環(huán)之前打印出來有直接往下讀取了,所以就導致了少了一條數據
?dbms_output.put_line(pname);
?fetch cemp into pname;
?--當游標讀取完所有數據后退出循環(huán)
?exit when cemp%notfound;
?end loop;
?end if;
?--注意:當系統(tǒng)拋出異常,游標并沒有被關閉,oracle自動啟動pmon(process monitor:進程監(jiān)視器),
?--將遺留的垃圾進行一個個回收清理干凈
close cemp;
--例外
exception
--接收拋出的異常并作出處理
when no_emp_found then dbms_output.put_line('找不到員工');
when others then dbms_output.put_line('其他例外');
end;
/
查看全部 -
算術或者轉換例外:value_error
查看全部 -
系統(tǒng)例外之 zero_divide
查看全部 -
系統(tǒng)例外之 too_many_rows
查看全部 -
系統(tǒng)例外之 no_data_found
查看全部 -
PLSQL中的例外
例外是程序設計語言提供的一種功能,用來增強程序的健壯性和容錯性
系統(tǒng)例外
No_data_found (沒有找到數據)
Too_many_rows (select...into 語句匹配多個行)
Zero_Divide (被零除)
Value_error(算術或轉換錯誤)
Timeout_on_resource (在等待資源是發(fā)生超時)
查看全部 -
帶參數的光標
cursor ?光標名 ?[(參數名 ?數據類型[,參數名 ?數據類型]...)] ?is ?select ?語句;
查看全部 -
?1.光標的屬性
? ? ?%found ?%notfound
? ? ?%isopen:判斷光標是否打開 true/false
? ? ?%rowcount:影響的行數
? ? 2.光標數的限制:默認情況下,oracle數據庫只允許在同一個會話中,打開300個光標 ? ?
? ? 修改光標數的限制:
? ? alter ?system ?set open_cursors=400 scope=both;
? ? scope的取值:both,memory,spfile(數據庫需要重啟)
查看全部 -
光標(游標)使用語法:
定義游標
為光標定義對應的變量
在程序體中打開光標
循環(huán)體中不斷取出新數據
關閉光標
程序執(zhí)行如果沒報錯,也沒產生效果,原因在于PLSQL程序體有對sql語句操作(對數據進行更改)時,需要在事物中執(zhí)行;而oracle默認事物級別為read committed,意味著如果沒有加上commit 進行提交,將不會產生效果(這里涉及到事物的原子性,隔離性,完整性和一致性),所以在關閉光標后需要提交事物。
提交事物(涉及數據更改時)
如果在寫commit之前執(zhí)行過PLSQL程序一次了,但是數據沒發(fā)生改變,那么,在加上commit之后,最好在begin 后面加個 ?rollback,將剛才的執(zhí)行過的回退掉,防止影響到結果
查看全部 -
光標(游標)
引用變量類型和記錄標量類型都不能代表一個集合,而光標可以,它就是一個結果集。
查看全部 -
循環(huán)語句
while
Loop
EXIT [when ?條件]; ? ---當條件成立的時候,退出循環(huán)
....... ? ? ---否則進入循環(huán)操作要執(zhí)行的語句
End loop;
For
FOR ?i ?IN ?1..3 ? LOOP
語句序列;
END LOOP;
查看全部
舉報