DROP ROUTINE — ルーチンを削除する
DROP ROUTINE [ IF EXISTS ]name
[ ( [ [argmode
] [argname
]argtype
[, ...] ] ) ] [, ...] [ CASCADE | RESTRICT ]
DROP ROUTINE
は1つ以上の既存のルーチンを削除します。
用語「ルーチン」は、集約関数や通常の関数、プロシージャを含みます。
パラメータや例、さらなる詳細の説明はDROP AGGREGATEやDROP FUNCTION、DROP PROCEDUREを参照してください。
DROP ROUTINE
により使われている検索規則は基本的にはDROP PROCEDURE
と同じです。特に、DROP ROUTINE
は、argmode
の印のない引数リストを、OUT
引数がそのリストに含まれているとする標準SQLの定義を使っているかもしれないと考慮するコマンドの振舞いを共有します。
(DROP AGGREGATE
とDROP FUNCTION
はそのようなことをしません。)
種類の異なるルーチンで同じ名前が共有されている時には、より特定のコマンド(DROP FUNCTION
等)では成功するものの、DROP ROUTINE
では曖昧なためのエラーで失敗する可能性があります。
引数の型のリストをより注意深く指定することでも、そのような問題を解決できるでしょう。
ALTER ROUTINE
やCOMMENT ON ROUTINE
のような既存のルーチンに対して作用する他のコマンドでも、この検索規則は使われています。
integer
型に対するルーチンfoo
を削除します。
DROP ROUTINE foo(integer);
このコマンドはfoo
が集約、関数、プロシージャの何れであるかによらず動作します。
このコマンドはSQL標準に準拠していますが、以下のPostgreSQLの拡張があります。
標準ではコマンド毎に一つのルーチンしか削除できません。
IF EXISTS
オプションは拡張です。
引数のモードと名前を指定可能できるのは拡張であり、モードを指定した時の検索規則は異なります。
ユーザ定義可能な集約関数は拡張です。