3.26.1 DROP PROCEDURE(手続き削除)
(1) 機能
手続きを削除します。
(2) 使用権限
- 手続きの所有者
-
自分が所有する手続きを削除できます。
- DBA権限を持つユーザ
-
他ユーザの所有する手続きを削除できます。
(3) 形式
DROP PROCEDURE 〔認可識別子.〕ルーチン識別子 〔WITH PROGRAM〕
(4) オペランド
(a) 〔認可識別子.〕ルーチン識別子
- 認可識別子
-
削除する手続きの所有者の認可識別子を指定します。
省略した場合,実行するユーザの認可識別子を仮定します。
- ルーチン識別子
-
削除する手続きのルーチンの名前を指定します。
(b) WITH PROGRAM
手続きを削除する場合,その手続きを使用する手続き,及びトリガの有効なSQLオブジェクトがあれば,そのSQLオブジェクトを無効にするときに指定します。
WITH PROGRAMを省略した場合,その手続きを使用する手続き,及びトリガの有効なSQLオブジェクトがあるときは,その手続きは削除できません。
(5) 共通規則
-
指定した手続きを呼び出すSQLルーチン,及び抽象データ型内のルーチン,トリガがある場合は削除しません。
-
抽象データ型内で定義した手続きは削除できません。
-
次のような場合,Java手続き中からDROP PROCEDUREは実行できません。
-
実行中のSQLオブジェクトが無効になる場合,又は削除される場合
-
実行中のJava手続きが削除される場合
-
(6) 留意事項
-
DROP PROCEDUREは,OLTP下のX/Openに従ったUAPから指定できません。
-
WITH PROGRAMを指定して手続き,及びトリガの有効なSQLオブジェクトを無効にした場合,ディクショナリ表SQL_ROUTINE_RESOURCES中の無効となった手続き,及びトリガの行は削除されます。
-
WITH PROGRAMを指定して無効にした手続き,及びトリガのSQLオブジェクトを実行するためには,ALTER ROUTINE又はALTER PROCEDUREを実行して手続き,及びトリガのSQLオブジェクトを再作成しておく必要があります。
-
WITH PROGRAMを指定して無効にしたトリガのSQLオブジェクトを実行するためには,次のどちらかの操作をする必要があります。
-
手続きを定義し直して,ALTER TRIGGER又はALTER ROUTINEを実行してトリガのSQLオブジェクトを再作成する。
-
無効にしたトリガをDROP TRIGGERで削除してから,削除した手続きを使用しないようにCREATE TRIGGERでトリガを再定義します。ただし,次のすべての条件を満たすトリガがある場合は,それらもすべてDROP TRIGGERで削除し,定義していた順にCREATE TRIGGERで再定義しないと,トリガ動作の実行順序が変わります。
(条件)
・無効にしたトリガよりも定義したのが後である。
・無効にしたトリガと定義した表が同じである。
・無効にしたトリガとトリガ契機(INSERT,UPDATE,又はDELETE)が同じである(ただし,UPDATEの場合は,トリガ契機列の指定の有無,及び内容に関係なく同じとみなされます)。
・無効にしたトリガとトリガ動作時期(BEFORE又はAFTER)が同じである。
・無効にしたトリガとトリガの動作する単位(行単位又は文単位)が同じである。
-
-
ルーチン識別子には,トリガ動作手続きの識別子は指定できません。トリガを削除する場合には,DROP TRIGGERを実行してください。