モジュール内のオブジェクトの作成

(おそらく 1 つのビジネス・ケースをサポートする) 一組のルーチン、データ・タイプ、および変数が特定された場合、管理やデプロイメントを簡単にするために共通のネーム・スペースでそれらをまとめて定義する目的で、モジュールを作成できます。 その次に実行するタスクは、モジュール内のオブジェクトの作成です。

始める前に

このタスクを進める前に、以下を行ってください。
  • ALTER MODULE ステートメントについての説明を確認します。
  • ALTER MODULE ステートメントの実行に必要な特権があることを確認します。

このタスクについて

このタスクを実行するには、ALTER MODULE ステートメントを実行します。 ALTER MODULE ステートメントを使用すると、オブジェクトをパブリッシュ済みオブジェクトまたは非公開オブジェクトとして追加できます。 パブリッシュ済みオブジェクトは、モジュールの外から参照できます。一方、非公開オブジェクトは、同じモジュール内の他のオブジェクトだけが参照できます。

モジュールの中では、ルーチン本体なしでプロシージャーまたは関数を最初に定義することができます。 これをプロトタイプといいます。 公開されるプロシージャーまたは関数に対してのみ、プロトタイプを作成できます。 同じルーチン・シグニチャーを使用することにより、公開ルーチン・プロトタイプのルーチン本体を後で追加することができます。

制約事項

モジュールの制約事項については、

手順

  1. 次のようにして ALTER MODULE ステートメントを定式化します。
    • モジュール内からのみ参照可能なオブジェクトをモジュールに追加するには、ADD 節を指定します。
    • モジュール内およびモジュール外から参照可能なオブジェクトをモジュールに追加するには、PUBLISH 節を指定します。
    1. ALTER MODULE ステートメントの構文に従って、モジュール内に作成されるオブジェクトの定義を指定します。
      ルーチンで PUBLISH 節を指定した場合には、オプションで、ルーチン・プロトタイプだけを提供することもできます。 後で ALTER MODULE ステートメントで ADD 節を使用することにより、ルーチンのインプリメンテーションを提供できます。
  2. サポートされる インターフェースから ALTER MODULE ステートメントを実行します。
  3. ステップ 1 から 2 を繰り返して、追加のオブジェクトをデータベースに作成します。

タスクの結果

ALTER MODULE ステートメントが正常に実行されると、オブジェクト定義がモジュールに追加されます。

以下の例は、ALTER MODULE ステートメントを使用して inventory というモジュールにオブジェクトを追加する方法を示しています。
ALTER MODULE inventory
  PUBLISH PROCEDURE p(IN c1 INT, IN c2 INT, IN c3 CHAR) @

ALTER MODULE inventory
  PUBLISH PROCEDURE q(IN c1 INT, IN c2 VARCHAR(8))@

ALTER MODULE inventory
  ADD PROCEDURE p(IN c1 INT, IN c2 INT, IN c3 CHAR) 
           LANGUAGE SQL 
           BEGIN 
              IF c1 > 10 THEN
                CALL q(1, 'hello')
              ELSE IF c2 > 5 THEN
                   SET c3 = CHAR(c2);
              END IF;
           END@

ALTER MODULE inventory
  ADD PROCEDURE r(c1 INT, c2 INT, c3 CHAR) 
           LANGUAGE SQL 
           BEGIN 
             CALL q(1, 'hello');
           END@

次のタスク

モジュールの中にオブジェクトを作成した後、さらにモジュール・オブジェクトをモジュールに追加したり、SQL ステートメントでモジュール・オブジェクトを参照したり、モジュール・ルーチンを呼び出したり、関連するその他のモジュール・タスクやデータベース・タスクを実行したりすることができます。