【DB2逆引きリファレンス目次】 【DB2逆引きリファレンス目次#アプリケーション開発編】 【DB2逆引きリファレンス目次#ストアドプロシージャ】
前提
- データベース接続が必要
- 以下のいずれかが必要: SYSADM権限, DBADM権限, スキーマに対するCREATEIN特権
- Cコンパイラを利用するための設定が完了している必要があります
解説
SQLプロシージャを用いてストアドプロシージャを作成するには、CREATE PROCEDUREを用います。
CREATE PROCEDURE プロシージャ名 [ 引数指定 ]
[SPECIFIC 固有名 ]
[DYNAMIC RESULT SETS リザルトセットの個数 ]
[更新種別の指定] [決定性の指定]
LANGUAGE SQL
SQLプロシージャ文
プロシージャ名
: 作成するプロシージャの名前を指定します。
引数指定
: プロシージャの引数を以下の形式で指定します。
( 入出力の種別 引数名 引数の型 [ , 入出力の種別 引数名 引数の型, ... ] )
入出力の種別は以下の形式のいずれかで指定します。
IN
: 入力として用いられます。
OUT
: 出力として用いられます。
INOUT
: 入力および出力として用いられます。
SPECIFIC 固有名
: このストアドプロシージャを参照するための固有名を指定します。 引数のシグネチャーは異なるが名前は同じようなストアドプロシージャが他にあるような場合、固有名で一意に参照することができます。
DYNAMIC RESULT SETS リザルトセットの個数
: ストアドプロシージャが処理結果として返すリザルトセットの個数を整数値で指定します。
更新種別の指定
: ストアドプロシージャの処理がデータを更新するのかどうかを、以下の形式のいずれかで指定します。
CONTAINS SQL
: ストアドプロシージャの処理はデータの読み取りも更新も行いません。
READS SQL DATA
: ストアドプロシージャの処理はデータの読み取りを行います。
MODIFIES SQL DATA
: ストアドプロシージャの処理はデータの読み取りおよび更新を行います。
決定性の指定
: ストアドプロシージャが、同一の引数に対して常に同じ結果を返すかどうかを、以下の形式のいずれかで指定します。
DETERMINISTIC
: 同一の引数に対して常に同じ結果を返します。
NOT DETERMINISTIC
: 同一の引数に対しても異なる結果を返す可能性があります。
SQLプロシージャ文
: ストアドプロシージャの処理を記述します。複合ステートメント内に複数のSQLプロシージャ文を記述することが可能です。
使用例
ストアドプロシージャ(ここではproc1)を作成する例。
db2 ==> CREATE PROCEDURE proc1
(IN p_empno CHARACTER(6), IN p_bonus DECIMAL(9, 2))
DYNAMIC RESULT SETS 0
MODIFIES SQL DATA
DETERMINISTIC
LANGUAGE SQL
BEGIN
UPDATE employee SET bonus = p_bonus WHERE empno = p_empno;
END↓
このストアドプロシージャは、指定されたempnoをもつ従業員のbonusの値を更新するものです。