pl/sql(2)
1.存儲過程
(1)存儲過程的創(chuàng)建及改動
語法:
CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] datatype [{(:= | DEFAULT ) defaultvalue}] [, ...])] {IS | AS} BEGIN procedure_body END procedure_name;
語法解析:
IN:輸入?yún)?shù)。
OUT:輸出參數(shù);
IN OUT:就可以輸入也可輸出的參數(shù);
datatype:參數(shù)的數(shù)據(jù)類型。此處不能帶精度。
:=|DEFAULT:用于設(shè)置參數(shù)的默認值。
? ? ?(2)
? ? ?例1:? ? ? ? ? ? ? ??
? ? ??
? ? ? ? ? ? ? ? ?
? ?過程的調(diào)用
? ? ? ? ? ? ? ? ???例2:帶兩個參數(shù)
? ? ? ? ? ? ? ? ? ??? ? ? ?
? ? ? ? ? 過程調(diào)用 ? ? ? ? ? ? ? ? ?
? ? ? (3)?刪除過程 DROP PROCEDURE test_procedure;
? ?2.函數(shù)
過程用來完畢一項任務,可能不返回值,也可能返回多個值,過程的調(diào)用是一條PL/SQL語句;函數(shù)包括RETURN子句,用來進行數(shù)據(jù)操作,并返回一個單獨的函數(shù)值,函數(shù)的調(diào)用僅僅能在一個表達式中。
語法:--函數(shù)是能夠返回值的命名的 PL/SQL 子程序。 --創(chuàng)建函數(shù)的語法:CREATE [OR REPLACE] FUNCTION <function name> [(param1,param2)] RETURN <datatype> IS|AS [local declarations] BEGINExecutable Statements;RETURN result; EXCEPTIONException handlers; END;
例: ? ? ? ? ? ? ? ? ? ? ? ? ??
? ? ? ? ? ? ? ? ? ? ? ? ??
調(diào)用函數(shù):
? ? ? ? ? ? ? ? ? ? ? ? ??
? ? 3.程序包中的游標 ? ? ? ? ? ? ? 游標的定義分為游標規(guī)范和游標主體兩部分
? ? ? ? ?在包規(guī)范中聲明游標規(guī)范時必須使用 RETURN 子句指定游標的返回類型
? ? ? ? ?RETURN子句指定的數(shù)據(jù)類型能夠是:
? ? ? ? ? ? ? ? ? 用 %ROWTYPE 屬性引用表定義的記錄類型
? ? ? ? ? ? ? ? ? 程序猿定義的記錄類型
例1: ? ? ?
調(diào)用
? ? ? ?? 例2: ? ? ? 實現(xiàn)增刪查改:
? ? ? ?4.觸發(fā)器
(1)觸發(fā)器的分類
? ? ? ? 觸發(fā)器分為 DML 觸發(fā)器、 INSTEAD OF 觸發(fā)器、DDL 觸發(fā)器和系統(tǒng)觸發(fā)器三種類型? ? ? ? DML 觸發(fā)器包含行級觸發(fā)器、語句級觸發(fā)器
(2)觸發(fā)器的功能:
? ? ? ? ? ? ? ? ? ?自己主動生成數(shù)據(jù)
? ? ? ? ? ? ? ? ? ?自己定義復雜的安全權(quán)限 例:
針對周六日不能進行改動數(shù)據(jù)庫:
測試:
? ? ? ? ? ? ? ? ? ?提供審計和日志記錄
? ? ? ? ? ? ? ? ? ?啟用復雜的業(yè)務邏輯
(3)行級觸發(fā)器:
用觸發(fā)器實現(xiàn)自增的主鍵:
1.
2.效率高
?
?
3.效率低
(4)語法解析:
INSTEAD OF:僅用于替代觸發(fā)器,即event_target必須為視圖,并且必須帶FOR EACH ROW子句
trigger_event:觸發(fā)的事件。能夠是DML事件(INSERT、UPDATE、DELETE、INSERT OR UPDATE、UPDATE OF column_name),系統(tǒng)事件(STARTUP、SHUTDOWN等)。
event_target:即指trigger_event事件是發(fā)生在哪個對象上的。如DML事件,那么event_target應該是表名或視圖名,假設(shè)是系統(tǒng)事件,那么event_target就應該是DATABASE或SCHEMA
FOR EACH ROW:假設(shè)帶此子句。即表示該觸發(fā)器是行級觸發(fā)器。假設(shè)省略,則是語句級觸發(fā)器。
WHEN condition?:用于限制行級觸發(fā)器,僅僅有滿足condition條件,才會觸發(fā)觸發(fā)器。
(5)改動觸發(fā)器的狀態(tài)
觸發(fā)器有ENABLED和DISABLED兩種狀態(tài)。
改動某個觸發(fā)器的狀態(tài)能夠運行以下的SQL:
ALTER TRIGGER trigger_name ENABLE | DISABLE;?
使某個表上的全部觸發(fā)器有效或無效:
ALTER TABLE table_name {ENABLE | DISABLE} ALL TRIGGERS;?
(6)刪除觸發(fā)器
DROP TRIGGER trigger_name;??
轉(zhuǎn)載于:https://www.cnblogs.com/gccbuaa/p/6775872.html
總結(jié)
- 上一篇: 查看php-fpm 占用内存情况
- 下一篇: 测试用例设计方法(五)路径覆盖