スケーラブルデータベースサーバ HiRDB Version 8 SQLリファレンス
DROP 〔PUBLIC 〕FUNCTION(関数削除,パブリック関数削除)
機能
関数を削除します。
また,すべてのユーザから,認可識別子でルーチン識別子を修飾しなくても使用できる関数(パブリック関数)を削除します。
(1)DROP FUNCTION(関数削除)
DROP FUNCTION(関数削除)について説明します。
使用権限
- 関数の所有者
- 自分が所有する関数を削除できます。
- DBA権限を持つユーザ
- 他ユーザが所有する関数を削除できます。
形式
DROP FUNCTION 〔認可識別子.〕ルーチン識別子(〔データ型〔,データ型〕…〕)
〔WITH PROGRAM〕
|
オペランド
- 認可識別子
- 削除する関数の所有者の認可識別子を指定します。
- ルーチン識別子
- 削除する関数の名称を指定します。
削除する関数のパラメタで指定したデータ型を指定します。削除する関数のパラメタに指定したデータ型が,固定長文字データ型又は可変長文字データ型でかつ,文字集合指定を指定している場合,その文字集合指定を指定してください。
関数を削除する場合,次に示す関数,手続き,及びトリガの有効なSQLオブジェクトを無効にするときに指定します。
- 削除する関数を使用する関数,手続き,及びトリガの有効なSQLオブジェクト
- 削除する関数と所有者,ルーチン識別子,及びパラメタ数が同じ関数を使用する関数,手続き,及びトリガの有効なSQLオブジェクト
WITH PROGRAMを省略した場合,次に示す関数,手続き,及びトリガのSQLオブジェクトがあるときは,その関数は削除できません。
- 削除する関数を使用する関数,手続き,及びトリガの有効なSQLオブジェクト
- 削除する関数と所有者,ルーチン識別子,及びパラメタ数が同じ関数を使用する関数,手続き,及びトリガの有効なSQLオブジェクト
共通規則
- 実行中のSQLオブジェクトが無効になる場合,Java手続き中からDROP FUNCTIONは実行できません。
- 抽象データ型内で定義した関数は削除できません。
- 同一名の関数が複数ある場合,削除する関数を一意に特定できるようにパラメタのデータ型を指定します。
- 指定した関数を使用する,ビュー表(パブリックビューも含む)がある場合,関数は削除できません。
- WITH PROGRAMの指定によって無効となる関数のうち,次のどれかの条件を満たす関数をビュー定義に使用している場合,その関数は削除できません。
- 引数のデータ型に抽象データ型を使用している
- 戻り値のデータ型に抽象データ型を使用している
留意事項
- DROP FUNCTIONは,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オブジェクトを再作成してもかまいません。
- 関数を定義し直して,ALTER TRIGGER又はALTER ROUTINEを実行してトリガのSQLオブジェクトを再作成する。
- 無効にしたトリガをDROP TRIGGERで削除してから,削除した関数を使用しないようにCREATE TRIGGERでトリガを再定義します。ただし,次のすべての条件を満たすトリガがある場合は,それらもすべてDROP TRIGGERで削除し,定義していた順にCREATE TRIGGERで再定義しないと,トリガ動作の実行順序が変わります。
(条件)
・無効にしたトリガよりも定義したのが後である。
・無効にしたトリガと定義した表が同じである。
・無効にしたトリガとトリガ契機(INSERT,UPDATE,又はDELETE)が同じである(ただし,UPDATEの場合は,トリガ契機列の指定の有無,及び内容に関係なく同じとみなされます)。
・無効にしたトリガとトリガ動作時期(BEFORE又はAFTER)が同じである。
・無効にしたトリガとトリガの動作する単位(行単位又は文単位)が同じである。
- WITH PROGRAMを指定してトリガ動作条件中で使用している関数を削除した場合,無効にしたトリガのSQLオブジェクトを実行するときだけでなく,そのトリガを引き起こすSQLを前処理するときにもエラーになります。
- WITH PROGRAMを指定して無効にした関数を使用したビュー表がある場合,そのビュー表を操作するためには,ALTER ROUTINEを実行して関数のSQLオブジェクトを再作成しておく必要があります。
(2)DROP PUBLIC FUNCTION(パブリック関数削除)
DROP PUBLIC FUNCTION(パブリック関数削除)について説明します。
使用権限
- パブリック関数の所有者
- 自分が所有する(定義した)パブリック関数を削除できます。
- DBA権限を持つユーザ
- 他ユーザが所有するパブリック関数を削除できます。
形式
DROP PUBLIC FUNCTION ルーチン識別子(〔データ型〔,データ型〕…〕)
〔WITH PROGRAM〕
|
オペランド
PUBLIC,ルーチン識別子,WITH PROGRAM以外の説明については,「3. DROP 〔PUBLIC 〕FUNCTION(関数削除,パブリック関数削除)」の「(1) DROP FUNCTION(関数削除)」を参照してください。
- PUBLIC
パブリック関数を削除する場合に指定します。
- ルーチン識別子
削除するパブリック関数の名称を指定します。
- WITH PROGRAM
パブリック関数を削除する場合,次に示す関数,手続き,及びトリガの有効なSQLオブジェクトを無効にするときに指定します。
- 削除するパブリック関数を使用する関数,手続き,及びトリガの有効なSQLオブジェクト
- 削除するパブリック関数と,ルーチン識別子,及びパラメタ数が同じパブリック関数を使用する関数,手続き,及びトリガの有効なSQLオブジェクト
WITH PROGRAMを省略した場合,次に示す関数,手続き,及びトリガのSQLオブジェクトがあるときは,その関数は削除できません。
- 削除するパブリック関数を使用する関数,手続き,及びトリガの有効なSQLオブジェクト
- 削除するパブリック関数とルーチン識別子,及びパラメタ数が同じ関数を使用する関数,手続き,及びトリガの有効なSQLオブジェクト
共通規則
- 実行中のSQLオブジェクトが無効になる場合,Java手続き中からDROP PUBLIC FUNCTIONは実行できません。
- その他の共通規則は,「3. DROP 〔PUBLIC 〕FUNCTION(関数削除,パブリック関数削除)」の「(1) DROP FUNCTION(関数削除)」と同じです。
留意事項
- DROP PUBLIC FUNCTIONは,OLTP下のX/Openに従ったUAPから指定できません。
- その他の留意事項は,「3. DROP 〔PUBLIC 〕FUNCTION(関数削除,パブリック関数削除)」の「(1) DROP FUNCTION(関数削除)」と同じです。
All Rights Reserved. Copyright (C) 2006, 2016, Hitachi, Ltd.