アプリケーション開発の手引き


SQL プロシージャーおよび外部プロシージャーの比較

外部ストアード・プロシージャーの定義と同じように、 SQL プロシージャー定義には、以下のような情報が記載されています。

外部ストアード・プロシージャーの CREATE PROCEDURE ステートメントとは異なり、 SQL プロシージャーの CREATE PROCEDURE ステートメントでは EXTERNAL 文節が指定されません。その代わり、 SQL プロシージャーにはそのストアード・プロシージャーのソース・ステートメントを含むプロシージャー本体があります。

次の例では、簡単なストアード・プロシージャーの CREATE PROCEDURE ステートメントが示されています。プロシージャー名、プロシージャーから (またはプロシージャーへ) 受け渡されるパラメーターのリスト、および LANGUAGE パラメーターはストアード・プロシージャーすべてに共通するものです。ただし、SQL の LANGUAGE 値およびプロシージャー本体を形成する BEGIN...END ブロックは、 SQL プロシージャー特有のものです。

   CREATE PROCEDURE UPDATE_SALARY_1         (1)
   (IN EMPLOYEE_NUMBER CHAR(6),             (2)
   IN RATE INTEGER)                         (2)
   LANGUAGE SQL                             (3)
   BEGIN
      UPDATE EMPLOYEE                       (4)
      SET SALARY = SALARY * (1.0 * RATE / 100.0 )
      WHERE EMPNO = EMPLOYEE_NUMBER;
   END

前述の例の注記:
(1) ストアード・プロシージャーの名前は UPDATE_SALARY_1 です。
(2) 2 つのパラメーターのデータ・タイプは CHAR(6) および INTEGER です。どちらも入力パラメーターです。
(3) LANGUAGE SQL は、これが SQL プロシージャーであることを示しています。プロシージャー本体は他のパラメーターに後続します。
(4) プロシージャー本体は単一の SQL UPDATE ステートメントで構成され、従業員表の行を更新します。

SQL プロシージャー本体では、 OUT パラメーターを式の値として使用することはできません。 OUT パラメーターへ値を割り当てるには、割り当てステートメントを使用するか、 SELECT、VALUES および FETCH ステートメントの INTO 文節のターゲット変数とするしか方法はありません。 IN パラメーターは、割り当てまたは INTO 文節のターゲットとして使用することはできません。


[ ページのトップ | 前ページ | 次ページ | 目次 | 索引 ]