儲存過程語法
1、儲存過程的概念
儲存過程是具有以下特徵的程式:
(1)用CREATE PROCEDURE語句註冊;
(2)包含一個或多個SQL語句和一些用程式語言編寫的
操作或邏輯處理;
(3)儲存在資料庫中且在DB2伺服器上執行;
(4)可以由正在使用SQL的應用程式使用CALL語句來呼叫;
(5)允許應用程式分兩部分執行:在客戶機上執行應用
程式,在伺服器上執行儲存過程。
儲存過程能夠幫助提高應用程式效能並減少數
據庫存取流量。
儲存過程還可以幫助集中業務邏輯。
2、儲存過程的型別
儲存過程的型別包括兩種:
1.外部儲存過程
2.SQL儲存過程
3、SQL儲存過程的建立與執行
建立儲存過程的語法:
CREATE PROCEDURE procedure_name
({[IN|OUT|INOUT] parameter_name datatype} [,…n])
[SPECIFIC specific_name]
[DYNAMIC RESULT SETS [0 | integer]]
[MODIFIES SQL DATA | CONTAINS SQL | READS SQL DATA]
[NOT DETERMINISTIC | DETERMINISTIC][CALLED ON NULL INPUT]
[INHERIT SPECIAL REGISTERS]
[OLD SAVEPOINT LEVEL | NEW SAVEPOINT LEVEL]
[LANGUAGE SQL][EXTERNAL ACTION | NO EXTERNAL ACTION]
[PARAMETER CCSID ASCII | UNICODE]
SQL_procedure_body
SQL_procedure_body ::=
[label_name:]BEGIN[ATOMIC | NOT ATOMIC]
[local_variable_declaration][cursor_declaration]
[condition_declaration][handler_declaration]
<SQL_routine_statement | dynamic_compound_statement>
END [label_name]
SQL儲存過程的建立與執行
使用CALL語句前需要連線至相應的資料庫。要使用CALL語句,輸入儲存過程名,加上任何IN或INOUT引數,並輸入“?”作為每個OUT引數的佔位符。
儲存過程傳遞引數的規則:
(1)變數和引數必須嚴格匹配;
(2)所有的引數都必須有值(包括佔位符“?”);
(3)過載儲存過程的區分和引數的匹配取決於引數的數目。
應用臨時表的儲存過程
臨時表一般在以下情況下使用:
(1)臨時表用於儲存程式執行中的臨時資料。
(2)臨時表可以用於儲存在一個程式中需要返回多次的結果集。
(3)臨時表也可以用於讓SQL訪問非關係型資料庫。
4、儲存過程的過載
DB2支援儲存過程的過載,這些儲存過程可以有相同的儲存過
程名和不同個數的引數,只要給它們指定不同的“特定名稱”
即可。
5、儲存過程的查詢、修改和刪除
1. 查詢
查詢使用者儲存過程語法格式為:
SELECT * FROM SYSCAT.PROCEDURES
[WHERE PROCSCHEMA=’ SQL儲存過程的模式名(必須大寫)’
[AND PROCNAME=’ SQL儲存過程的名稱(必須大寫)’]
[AND SPECIFICNAME=’ SQL儲存過程的特定名稱(必須大寫)’]]
2.修改
DB2儲存過程一旦建立就不能夠修改,只能刪除。如果
需要修改儲存過程,必須先刪除原來的儲存過程,然後再
建立新的儲存過程。
3. 刪除
刪除儲存過程的語法格式為:
DROP PROCEDURE procedure_name#
或
DROP PROCEDURE procedure_name()#
或
DROP PROCEDURE procedure_name (data_type[,…n])#
或
DROP SPECIFIC PROCEDURE procedure_specific_name #