oracle快捷语句框架中,Oracle框架:PL/SQL编程:
PL/SQL編程
一:什么是PL/SQL
(1.)PL/SQL體系結(jié)構(gòu):
PL/SQL引擎用來編譯和執(zhí)行,PL/SQL塊或子程序,該引擎駐留在Oracle服務(wù)器中。
(2.)PL/SQL塊簡介
PL/SQL是一種塊結(jié)構(gòu)語音,它將一組語句塊放在一個快中。
(3.)運算符和表達(dá)式:
PL/SQL語音支持操作符包含關(guān)系運算符,一般運算符和邏輯運算符,與SQL語音類似。
(4.)常量和變量聲明
在PL/SQL塊的可執(zhí)行部分引用變量和常量前,必須先對其進(jìn)行聲明。變量和PL/SQL塊的部分聲明,在PL/SQ塊的 可執(zhí)行部分被使用。語法如下:
Variable_name data_type 變量范圍 變量的初始值;
(5.)注釋:
在PL/SQL可以使用如下兩種注釋符號:
‘--’雙減號
‘//’
在PL/SQL快中的可執(zhí)行部分引用的變量和常量前,必須先對其聲明
語法:variable_name data_type[(size)][:=init_value];
變量名稱 數(shù)據(jù)類型 size 指定變量的初始值
二:PL/SQL數(shù)據(jù)類型
(1.)Oracle使用變量類型圖
(2.)LOB數(shù)據(jù)類型
(3.)屬性類型:
%Type:定義一個變量,其數(shù)據(jù)類型與已經(jīng)定義的某個數(shù)據(jù)變量(尤其是表的某一列)的數(shù)據(jù)類型相一致這時可以使用%Type (優(yōu)點:可以不必知道所引用的數(shù)據(jù)庫列的數(shù)據(jù)類型。所引用的數(shù)據(jù)類型可以實現(xiàn)時改變,容易保持一致,不必修改PL/SQL程序)
%ROWTYPE:返回一個記錄類型,其數(shù)據(jù)類型和數(shù)據(jù)庫表的數(shù)據(jù)結(jié)構(gòu)相一致,這時可以使用%ROWTYPE.(優(yōu)點:可以不必知道所引用數(shù)據(jù)庫列的個數(shù)和數(shù)據(jù)類型。所引用的數(shù)據(jù)庫中列的個數(shù)和數(shù)據(jù)庫類型可以實現(xiàn)改變,容易保持一致,不用修改PL/SQL程序)
三:PL/SQL控制語句
(1.)條件控制:if語句如下:
If 布爾表達(dá)式 then
PL/SQL和SQL語句
End if;
If 布爾表達(dá)式 then
PL/SQL和SQL語句
Elst
其他語句
End if;
If 布爾表達(dá)式 then
PL/SQL和SQL語句
Elsif 其他布爾表達(dá)式 then
其他語句
Elsif 其他布爾表達(dá)式 then
Else
其他語句
End if;
(2.)case 語法如下
----------------格式1----------------
Case 條件表達(dá)式
When 條件表達(dá)式1 then
語句段1
When 條件表達(dá)式2 then
語句段2
…………….
When 條件表達(dá)式n then
語句段n
End case;
----------------格式2----------------
Case 條件表達(dá)式
When 條件表達(dá)式1 then
語句段1
When 條件表達(dá)式2 then
語句段2
…………….
When 條件表達(dá)式n then
語句段n
Else 語句段
End case;
(3.)循環(huán)控制:Loop循環(huán)語法如下:
Loop
要執(zhí)行的語句;
Exit when 條件語句 -------條件滿足時跳出循環(huán)
End loop;
While循環(huán)語法如下:
While 布爾表達(dá)式 loop
要執(zhí)行的語句;
End loop;
For循環(huán)語法如下
For 循環(huán)計數(shù)器 In reverse 下限…….上限 loop
要執(zhí)行的語句
End loop;
四:異常處理:
(1.)預(yù)定義異常:
(2.)處理用戶自定義異常:
在PL/SQL塊的定義部分定義的異常情況
異常情況 exceptlon
拋出異常情況:
Raise 異常情況
在PL/SQL塊的異常情況處理部分對異常情況做出的相應(yīng)處理
五:游標(biāo):
(2.)游標(biāo)的分類
隱式游標(biāo):返回單行記錄
顯示游標(biāo):返回多行記錄
顯示游標(biāo)使用步驟:
(1.)聲明游標(biāo):cursor 名稱 is
(2.)打開游標(biāo):open 名稱;
(3.)提取游標(biāo):fetch 名稱 into variables;
(4.)關(guān)閉游標(biāo): close 名稱;
(3.)使用循環(huán)游標(biāo)簡化游標(biāo)的讀取語法:
For 聲明記錄變量 in 名稱
Loop
Executable_statements
End loop;
(4.)No_data_found和notfound的區(qū)別
Select………into語句返回0條記錄和多條記錄是觸發(fā)no_data_found
當(dāng)update或delete語句的where子句未找到時,觸發(fā)%notfound
在提取循環(huán)中用%notfound或%found來確定循環(huán)的退出條件,而不用no_data_fuond
六:存儲過程:
子程序的組成:
(1.)聲明部分:類型,游標(biāo),常量,變量,異常,嵌套子程序聲明
(2.)可執(zhí)行部分:可執(zhí)行部分包括賦值,控制執(zhí)行過程存儲過程中出現(xiàn)的異常
(3.)異常處理部分:異常處理程序,負(fù)責(zé)處理執(zhí)行存儲過程中出現(xiàn)的異常。
子程序的優(yōu)點如下:
模塊化,可重用性,可維護(hù)性,安全性。
(4.)存儲過程用法:
1.創(chuàng)建存儲過程:語法如下:
Create 語句 procedure 存儲名稱
參數(shù)列表
Is|as
局部聲明
Begin
可執(zhí)行語句
exception
異常處理程序
End 存儲名稱;
2.調(diào)用存儲過程
(1.)用命令調(diào)用
語法如下:
Exce 過程名稱 參數(shù)列表;
(2.)參數(shù)的傳遞方式三種:
按位置傳遞
Exec add_emp(1111,‘mary’,2000,’‘manager’,10);
按名稱傳遞
混合方式傳遞
3.存儲過程參數(shù)模式語法如下:
存儲名稱 in|out|in out datatype :=賦值;
4.存儲過程訪問權(quán)限
-----授予a執(zhí)行emp的權(quán)限
Grant execute no add_emp to a
-------撤銷權(quán)限
Revoke execute on add_emp from a;
5.刪除存儲過程
Drop procedure 存儲名稱;
七:存儲過程的調(diào)試與跟蹤:
(1.)在sql*plus下調(diào)試
(2.)用戶PL/SQL Developer工具調(diào)試
其中on_flag有三種情況:
0表示過程執(zhí)行成功但無提示信息。大于0表示過程執(zhí)行成功但有提示信息。
*小于1表示過程執(zhí)行失敗且有提示信息。
總結(jié)
以上是生活随笔為你收集整理的oracle快捷语句框架中,Oracle框架:PL/SQL编程:的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: mysql中的生日应该是什么类型_MyS
- 下一篇: mysql 工具 08s01_Mysql