日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

pl/sql(2)

發布時間:2025/3/20 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 pl/sql(2) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.


1.存儲過程


(1)存儲過程的創建及改動

語法:

CREATE [OR REPLACE] PROCEDURE procedure_name [(parameter_name [IN | OUT | IN OUT] datatype [{(:= | DEFAULT ) defaultvalue}] [, ...])] {IS | AS} BEGIN procedure_body END procedure_name;

語法解析:

IN:輸入參數。

OUT:輸出參數;

IN OUT:就可以輸入也可輸出的參數;

datatype:參數的數據類型。此處不能帶精度。

:=|DEFAULT:用于設置參數的默認值。

? ? ?

(2)

? ? ?例1:
? ? ? ? ? ? ? ??
? ? ??
? ? ? ? ? ? ? ? ?

? ?過程的調用

? ? ? ? ? ? ? ? ?

??例2:帶兩個參數

? ? ? ? ? ? ? ? ? ??
? ? ? ?
? ? ? ? ? 過程調用 ? ? ? ? ? ? ? ? ?
? ? ? (3)?刪除過程 DROP PROCEDURE test_procedure;
? ?2.函數

過程用來完畢一項任務,可能不返回值,也可能返回多個值,過程的調用是一條PL/SQL語句;函數包括RETURN子句,用來進行數據操作,并返回一個單獨的函數值,函數的調用僅僅能在一個表達式中。

語法:
--函數是能夠返回值的命名的 PL/SQL 子程序。 --創建函數的語法:CREATE [OR REPLACE] FUNCTION <function name> [(param1,param2)] RETURN <datatype> IS|AS [local declarations] BEGINExecutable Statements;RETURN result; EXCEPTIONException handlers; END;
例: ? ? ? ? ? ? ? ? ? ? ? ? ??


? ? ? ? ? ? ? ? ? ? ? ? ??

調用函數:
? ? ? ? ? ? ? ? ? ? ? ? ??



? ? 3.程序包中的游標 ? ? ? ? ? ? ? 游標的定義分為游標規范和游標主體兩部分
? ? ? ? ?在包規范中聲明游標規范時必須使用 RETURN 子句指定游標的返回類型
? ? ? ? ?RETURN子句指定的數據類型能夠是:
? ? ? ? ? ? ? ? ? 用 %ROWTYPE 屬性引用表定義的記錄類型
? ? ? ? ? ? ? ? ? 程序猿定義的記錄類型

例1: ? ? ?
調用


? ? ? ?? 例2: ? ? ? 實現增刪查改:



? ? ? ?4.觸發器

(1)觸發器的分類

? ? ? ? 觸發器分為 DML 觸發器、 INSTEAD OF 觸發器、DDL 觸發器和系統觸發器三種類型
? ? ? ? DML 觸發器包含行級觸發器、語句級觸發器
(2)觸發器的功能:
? ? ? ? ? ? ? ? ? ?自己主動生成數據
? ? ? ? ? ? ? ? ? ?自己定義復雜的安全權限
例:

針對周六日不能進行改動數據庫:





測試:

? ? ? ? ? ? ? ? ? ?提供審計和日志記錄
? ? ? ? ? ? ? ? ? ?啟用復雜的業務邏輯



(3)行級觸發器:

用觸發器實現自增的主鍵:


1.


2.效率高

?

?

3.效率低




(4)語法解析:

INSTEAD OF:僅用于替代觸發器,即event_target必須為視圖,并且必須帶FOR EACH ROW子句

trigger_event:觸發的事件。能夠是DML事件(INSERT、UPDATE、DELETE、INSERT OR UPDATE、UPDATE OF column_name),系統事件(STARTUP、SHUTDOWN等)。

event_target:即指trigger_event事件是發生在哪個對象上的。如DML事件,那么event_target應該是表名或視圖名,假設是系統事件,那么event_target就應該是DATABASE或SCHEMA

FOR EACH ROW:假設帶此子句。即表示該觸發器是行級觸發器。假設省略,則是語句級觸發器。

WHEN condition?:用于限制行級觸發器,僅僅有滿足condition條件,才會觸發觸發器。


(5)改動觸發器的狀態

觸發器有ENABLED和DISABLED兩種狀態。

改動某個觸發器的狀態能夠運行以下的SQL:

ALTER TRIGGER trigger_name ENABLE | DISABLE;

?

使某個表上的全部觸發器有效或無效:

ALTER TABLE table_name {ENABLE | DISABLE} ALL TRIGGERS;

?

(6)刪除觸發器

DROP TRIGGER trigger_name;

??

轉載于:https://www.cnblogs.com/gccbuaa/p/6775872.html

總結

以上是生活随笔為你收集整理的pl/sql(2)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。