Hitachi

ノンストップデータベース HiRDB Version 10 SQLリファレンス


3.26.1 DROP PROCEDURE(手続き削除)

〈この項の構成〉

(1) 機能

手続きを削除します。

(2) 使用権限

手続きの所有者

自分が所有する手続きを削除できます。

DBA権限を持つユーザ

他ユーザの所有する手続きを削除できます。

(3) 形式

 DROP PROCEDURE 〔認可識別子.〕ルーチン識別子
           〔WITH PROGRAM〕

(4) オペランド

(a) 〔認可識別子.〕ルーチン識別子

認可識別子

削除する手続きの所有者の認可識別子を指定します。

省略した場合,実行するユーザの認可識別子を仮定します。

ルーチン識別子

削除する手続きのルーチンの名前を指定します。

(b) WITH PROGRAM

手続きを削除する場合,その手続きを使用する手続き,及びトリガの有効なSQLオブジェクトがあれば,そのSQLオブジェクトを無効にするときに指定します。

WITH PROGRAMを省略した場合,その手続きを使用する手続き,及びトリガの有効なSQLオブジェクトがあるときは,その手続きは削除できません。

(5) 共通規則

  1. 指定した手続きを呼び出すSQLルーチン,及び抽象データ型内のルーチン,トリガがある場合は削除しません。

  2. 抽象データ型内で定義した手続きは削除できません。

  3. 次のような場合,Java手続き中からDROP PROCEDUREは実行できません。

    • 実行中のSQLオブジェクトが無効になる場合,又は削除される場合

    • 実行中のJava手続きが削除される場合

(6) 留意事項

  1. DROP PROCEDUREは,OLTP下のX/Openに従ったUAPから指定できません。

  2. WITH PROGRAMを指定して手続き,及びトリガの有効なSQLオブジェクトを無効にした場合,ディクショナリ表SQL_ROUTINE_RESOURCES中の無効となった手続き,及びトリガの行は削除されます。

  3. WITH PROGRAMを指定して無効にした手続き,及びトリガのSQLオブジェクトを実行するためには,ALTER ROUTINE又はALTER PROCEDUREを実行して手続き,及びトリガのSQLオブジェクトを再作成しておく必要があります。

  4. WITH PROGRAMを指定して無効にしたトリガのSQLオブジェクトを実行するためには,次のどちらかの操作をする必要があります。

    • 手続きを定義し直して,ALTER TRIGGER又はALTER ROUTINEを実行してトリガのSQLオブジェクトを再作成する。

    • 無効にしたトリガをDROP TRIGGERで削除してから,削除した手続きを使用しないようにCREATE TRIGGERでトリガを再定義します。ただし,次のすべての条件を満たすトリガがある場合は,それらもすべてDROP TRIGGERで削除し,定義していた順にCREATE TRIGGERで再定義しないと,トリガ動作の実行順序が変わります。

      (条件)

      ・無効にしたトリガよりも定義したのが後である。

      ・無効にしたトリガと定義した表が同じである。

      ・無効にしたトリガとトリガ契機(INSERT,UPDATE,又はDELETE)が同じである(ただし,UPDATEの場合は,トリガ契機列の指定の有無,及び内容に関係なく同じとみなされます)。

      ・無効にしたトリガとトリガ動作時期(BEFORE又はAFTER)が同じである。

      ・無効にしたトリガとトリガの動作する単位(行単位又は文単位)が同じである。

  5. ルーチン識別子には,トリガ動作手続きの識別子は指定できません。トリガを削除する場合には,DROP TRIGGERを実行してください。