モジュール内のオブジェクトのドロップ

モジュール内に定義されたオブジェクトが不要になった場合には、モジュールのドロップ・タスクを実行できます。 モジュール内の一部のオブジェクトだけが不要になった場合には、オプションで、これらのオブジェクトだけをドロップすることもできます。

始める前に

このタスクを進める前に、以下を行ってください。
  • モジュールが存在する必要があります。
  • ALTER MODULE ステートメントを実行する権限を持っている必要があります。

このタスクについて

このタスクは、サポートされる任意の インターフェースから実行可能です。

制約事項

制約事項については、

手順

  1. 1 つ以上のオブジェクトをモジュールからドロップするには、次のように ALTER MODULE ステートメントを定式化します。
    1. ドロップされるモジュールの名前を指定します。
    2. DROP 節を指定します。
    3. ドロップされるモジュール・オブジェクトの名前を指定します。 モジュール・オブジェクトがルーチンである場合は、ルーチンのシグニチャーを指定します。
  2. モジュール内のすべてのオブジェクトをドロップするには、次のように ALTER MODULE ステートメントを定式化します。
    1. モジュールの名前を指定します。
    2. DROP BODY 節を指定します。
  3. ALTER MODULE ステートメントを実行します。

タスクの結果

ステートメントが正常に実行されると、指定されたモジュール・オブジェクトがモジュールからドロップされます。

モジュールが次のように定義されているとします。
CREATE MODULE m @  

ALTER MODULE m PUBLISH PROCEDURE B() @  

ALTER MODULE m PUBLISH PROCEDURE A() 
                         BEGIN 
                           CALL B();         
                         END @  

ALTER MODULE m ADD PROCEDURE B() BEGIN  END @ 
以下のステートメントを実行することにより、プロシージャー B をドロップできます。
ALTER MODULE m DROP PROCEDURE B @
ステートメントが正常に実行されると、プロシージャー B がモジュール m からドロップされます。 従属オブジェクトであるプロシージャー A が参照するプロシージャー B は、もはや使用可能でないため、プロシージャー A は作動不能とマーク付けされます。

以下を実行することにより、m というモジュールに定義されたすべてのプライベート・オブジェクトをドロップできます。

ALTER MODULE m DROP BODY @
ステートメントが正常に実行されると、
  • モジュールに定義された公開プロシージャーの本体がドロップされます。 プロシージャー・プロトタイプの定義は残ります。
  • モジュール専用のデータ・タイプとグローバル変数は、ドロップされます。 公開されるデータ・タイプとグローバル変数の定義は残ります。
  • モジュールはドロップされません。 スキーマ内に引き続き定義されています。

次のタスク

モジュールからオブジェクトを正常にドロップした後、モジュール・オブジェクトの作成、モジュールの変更、その他のモジュール関連タスクを実行できます。