DB2 LUW でのストアド プロシージャの定義

ストアド プロシージャは、定義されるまでは使用できません。これを行うには、CREATE PROCEDURE コマンドを使用します。DB2 コマンド プロンプトを使用するか、プログラム内にコマンドを配置して、コンパイルおよび実行します。DB2 コマンド プロンプトを使用する場合は、最初に、ストアド プロシージャを実行する DB2 LUW サーバーに接続します。

次に例を示します。

C:> db2 connect to sample

DB2 コマンド プロンプトでコマンドを入力するか (継続文字およびコマンド区切り文字を必ず含めてください)、ANSI テキスト ファイルに CREATE PROCEDURE を記述できます。たとえば、テキスト ファイル creproc.sql に前述のコマンドが記述されている場合、入力するコマンドは次のようになります。

C:> db2 -td; -vf creproc.sql

詳細は次のとおりです。

  • -td オプションは、次の文字がコマンドを終了する区切り文字であることを示します。この例では、セミコロン (;) になります。
  • -vf オプションは、次のトークンが、SQL コマンド スクリプトを含む処理ファイルであることを示します。

CREATE PROCEDURE 文では、ストアド プロシージャを一意に識別する必要があります。ストアド プロシージャを変更して、パラメーターの追加や削除、または機能の変更を行う場合は、DROP PROCEDURE コマンドを使用してから、CREATE PROCEDURE コマンドを使用してそのストアド プロシージャを再度追加する必要があります。

次の例は、一意のストアド プロシージャを識別する、テキスト ファイル (creproc.sql など) 内の CREATE PROCEDURE コマンドを示しています。

DROP PROCEDURE GETPRML;
CREATE PROCEDURE GETPRML
  (IN PROCNM CHAR(18) 
  ,IN SCHEMA CHAR(8)  
  ,OUT OUTCODE INTEGER 
  ,OUT PARMLST VARCHAR(30) 
  )   
    DYNAMIC RESULT SETS 0
    LANGUAGE COBOL 
    PARAMETER STYLE GENERAL
    NO DBINFO
    FENCED
    NOT THREADSAFE
    READS SQL DATA
    PROGRAM TYPE SUB
    EXTERNAL NAME "GETPRML!GETPRML"  ;

DB2 が最初に開発された時点では、CREATE PROCEDURE 関数はサポートされていませんでした。このため、CREATE PROCEDURE を実行せずに COBOL ストアド プロシージャを作成することもできます。この方法の例および必要なパラメーター リストは、DB2 LUW アプリケーション開発クライアントに含まれています。