国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

開發PL/SQL子程序和包及使用PL/SQL編寫觸發器、在JDBC中應用Oracle

2019-11-15 00:54:59
字體:
來源:轉載
供稿:網友
開發PL/SQL子程序和包及使用PL/SQL編寫觸發器、在JDBC中應用Oracle

1. 子程序的各個部分:

聲明部分、可執行部分、異常處理部分(可選)

2.子程序的分類:

A. 過程 - 執行某些操作

a. 創建過程的語法:

CREATE [OR REPLACE] PROCEDURE <procedure name> [(<parameter list>)] IS|AS

<local variable declaration>

BEGIN

<executable statements>

[EXCEPTION

<exception handlers>]

END;

b. 過程參數的三種模式:

IN:用于接受調用程序的值、默認的參數模式

OUT:用于向調用程序返回值

IN OUT:用于接受調用程序的值,并向調用程序返回更新的值

c. 將過程的執行權限授予其他用戶:

SQL> GRANT EXECUTE ON find_emp TO MARTIN;

SQL> GRANT EXECUTE ON swap TO PUBLIC;

d. 刪除過程:SQL> DROP PROCEDURE find_emp;

B. 函數 - 執行操作并返回值

a. 創建函數的語法:

CREATE [OR REPLACE] FUNCTION <function name> [(param1,param2)] RETURN <datatype> IS|AS [local declarations]

BEGIN

Executable Statements;

RETURN result;

EXCEPTION

Exception handlers;

END;

b. 定義函數的限制:

函數只能接受 IN 參數,而不能接受 IN OUT 或 OUT 參數

形參不能是 PL/SQL 類型

函數的返回類型也必須是數據庫類型

c.訪問函數的兩種方式:使用 PL/SQL 塊、使用 SQL 語句

3. 子程序的優點:

模塊化、可重用性、可維護性、安全性

4. 程序包:

是對相關過程、函數、變量、游標和異常等對象的封裝

A. 程序包由規范和主體兩部分組成

a.規范:聲明程序包中公共對象。包括類型、變量、常量、異常、游標規范和子程序規范等

b.主體:聲明程序包私有對象和實現在包規范中聲明的子程序和游標

B . 創建程序包

a. 程序包規范

CREATE [OR REPLACE] PACKAGE package_name IS|AS

[Public item declarations] [Subprogram specification]

END [package_name];

b. 程序包主體

CREATE [OR REPLACE] PACKAGE BODY package_name IS|AS

[Private item declarations]

[Subprogram bodies]

[BEGIN Initialization]

END [package_name];

5. 程序包的優點

a. 模塊化

b. 更輕松的應用程序設計

c. 信息隱藏

d. 新增功能

e. 性能更佳

6. 程序包中的游標

A. 游標的定義分為游標規范和游標主體兩部分

B. 在包規范中聲明游標規范時必須使用 RETURN 子句指定游標的返回類型

RETURN子句指定的數據類型可以是:

a. 用 %ROWTYPE 屬性引用表定義的記錄類型

b. 程序員定義的記錄類型

7. 有關子程序和程序包的信息

A. USER_OBJECTS 視圖包含用戶創建的子程序和程序包的信息

SELECT object_name, object_type FROM USER_OBJECTS WHERE object_type IN ('PROCEDURE', 'FUNCTION', 'PACKAGE', 'PACKAGE BODY');

B. USER_SOURCE 視圖存儲子程序和程序包的源代碼

SELECT line, text FROM USER_SOURCE WHERE NAME='TEST';

8. 觸發器:

是當特定事件出現時自動執行的存儲過程(特定事件可以是執行更新的DML語句和DDL語句)

注意:觸發器不能被顯式調用

9. 觸發器的功能:

自動生成數據、自定義復雜的安全權限、提供審計和日志記錄、啟用復雜的業務邏輯

10. 創建觸發器的語法

CREATE [OR REPLACE] TRIGGER trigger_name AFTER | BEFORE | INSTEAD OF [INSERT] [[OR] UPDATE [OF column_list]] [[OR] DELETE] ON table_or_view_name

[REFERENCING {OLD [AS] old / NEW [AS] new}] [FOR EACH ROW]

[WHEN (condition)] pl/sql_block;

11. DML觸發器的相關概念

A. BEFORE觸發器:是在某種操作發生之前執行的觸發器

B. AFTER觸發器:是在某種操作發生之后執行的觸發器

C. 語句級觸發器:無論受影響的行數是多少,都只執行一次

D. 行級觸發器:對DML語句修改的每個行執行一次

E. NEW偽記錄:只在UPDATE和INSERT DML觸發器內可用,它包含了修改發生后被 影響的行的值

F. OLD偽記錄:只在UPDATE和DELETE DML觸發器內可用,它包含了修改發生前被 影響的行的值

G. WHEN子句:某段代碼是否被執行

12.觸發器由三部分組成:

A. 觸發器語句(事件):定義激活觸發器的 DML 事件和 DDL 事件

B. 觸發器限制:執行觸發器的條件,該條件必須為真才能激活觸發器

C. 觸發器操作(主體):包含一些 SQL 語句和代碼,它們在發出了觸發器語句且觸發限制的值為真時運行

13. DML觸發器:

當表發生數據修改事件(增加、刪除、修改)自動執行的PL/SQL 塊

語法:

CREATE OR REPLACE TRIGGER 觸發器名稱{AFTER|BEFORE } --指定觸發時機{INSERT|DELETE|UPDATE}--指定觸發事件類型ON 表名--指定所監控的表{FOR EACH ROW} --指定觸發次數

------上面:執行條件--------------下面:執行代碼----------------declare

BEGIN 代碼;END;

14. 條件謂詞

INSERTING、UPDATING、DELETING

15. 觸發器應用

使用場合:控制數據安全、實現數據審計、實現數據完整性、實現參照完整性

16. INSTEAD OF觸發器(替代觸發器)

17.系統事件觸發器

18.管理觸發器

A. 啟用和禁用觸發器:何時禁止:數據導入導出時禁止

SQL> ALTER TRIGGER aiu_itemfile DISABLE;

SQL> ALTER TRIGGER aiu_itemfile ENABLE;

B. 重新編譯觸發器:數據庫對象發生改變后

C. 刪除觸發器

SQL> DROP TRIGGER aiu_itemfile;

19. 觸發器和存儲過程

觸發器 存儲過程

編寫 無參數,返回值 有參數,有返回值(參數)

編寫 不能commit或rollback 能

調用方式 事件發生時自動調用 手工調用

操作對象 基于某張表 與表無關

20.JDBC連接Oracle數據庫

Class.forName(“oracle.jdbc.driver.OracleDriver”);

Connection con = null;

con = DriverManager.getConnection(jdbc:oracle:thin:@localhost:1521:數據庫實例);

21. 在JDBC中執行PL/SQL匿名塊

A.步驟:

a. 明確PreparedStatement執行匿名塊的字符串

b. 創建PreparedStatemen對象

c. 根據需要設定綁定變量

d. 執行PreparedStatement對象

22. 在JDBC中執行PL/SQL的存儲過程

A. 語法:

a. {call 過程名[(?,?,?....)]} //訪問帶參數的存儲過程

b. {? = cal 過程名[(?,?,?.......)]} //訪問返回結果參數的存儲過程

c. {call 過程名} //訪問不帶參數的存儲過程

B.步驟:

a. 明確CallableStatement調用字符串

b. 創建CallableStatement對象( CallableStatement = Connection.prepareCall(sql);)

c. 綁定輸入(IN)參數

d. 注冊輸出(OUT)參數(CallableStatement .registerOutParameter(索引, OracleTypes.數據類型))

e. 執行CallableStatement對象返回結果


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 报价| 化德县| 蕲春县| 六安市| 乌兰察布市| 离岛区| 青田县| 泰州市| 慈溪市| 进贤县| 固镇县| 广昌县| 长兴县| 金门县| 云安县| 临沂市| 静海县| 甘谷县| 新宁县| 泰兴市| 潮安县| 东丰县| 内丘县| 苍山县| 汉源县| 杨浦区| 海原县| 芜湖县| 靖江市| 闵行区| 根河市| 扶余县| 尖扎县| 唐山市| 大理市| 渝中区| 峨山| 长岛县| 巍山| 邯郸县| 绥化市|