1. 程式人生 > >儲存過程語法

儲存過程語法

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 #