ストアドプロシージャ(SQL)を作成するには

提供: DB2逆引きWiki
移動: 案内, 検索

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の値を更新するものです。

参照

個人用ツール
名前空間

変種
操作
案内
ツール