DROP FUNCTION (SQL)
構文
DROP FUNCTION [IF EXISTS] name [ FROM className ]
概要
DROP FUNCTION コマンドは関数を削除します。関数を削除すると、InterSystems IRIS は、権限が与えられている全ユーザおよびロールを無効にして、データベースから削除します。
関数の削除には、GRANT コマンドで指定された %DROP_FUNCTION 管理者特権が必要です。この特権がないと、SQLCODE -99 エラー (特権違反) が生成されます。
関数は、その関数定義を含むクラス定義が導入済みのクラスの場合、削除することはできません。この操作は SQLCODE -400 エラーで失敗し、%msg が “導入済みのクラス classname を変更する DDL を実行できません” に設定されます。
name と FROM className の次のような組み合わせがサポートされています。FROM 節では、SQL 名ではなく、クラス・パッケージ名と関数名を指定することに注意してください。これらの例では、システム全体の既定のスキーマ名は、User クラス・パッケージに対応する SQLUser です。
-
DROP FUNCTION BonusCalc FROM funcBonusCalc : 関数 SQLUser.BonusCalc() を削除します。
-
DROP FUNCTION BonusCalc FROM User.funcBonusCalc : 関数 SQLUser.BonusCalc() を削除します。
-
DROP FUNCTION Test.BonusCalc FROM funcBonusCalc : 関数 SQLUser.BonusCalc() を削除します。
-
DROP FUNCTION BonusCalc FROM Employees.funcBonusCalc : 関数 Employees.BonusCalc() を削除します。
-
DROP FUNCTION Test.BonusCalc FROM Employees.funcBonusCalc : 関数 Employees.BonusCalc() を削除します。
指定された関数が存在しない場合、DROP FUNCTION は SQLCODE -362 エラーを発行します。指定されたクラスが存在しない場合、DROP FUNCTION は SQLCODE -360 エラーを発行します。指定された関数が複数の関数を参照する可能性がある場合、DROP FUNCTION は SQLCODE -361 エラーを生成します。このあいまいさを解消するには、className を指定する必要があります。
引数
IF EXISTS
存在しない関数に対してコマンドが実行される場合にエラーを抑制する引数 (オプション)。
name
削除される関数の名前。識別子の名前です。関数のパラメータの括弧は指定しないでください。name は修飾 (schema.name)、未修飾 (name) のどちらでもかまいません。FROM className 節が指定されていない限り、関数名が未修飾の場合はシステム全体の既定のスキーマ名が使用されます。
FROM className
指定があれば、FROM className 節は与えられたクラスから関数を削除します。関数の SQL 名 (BonusCalc) ではなく、className (funcBonusCalc) を指定する必要があります。FROM 節が指定されていない場合、InterSystems IRIS はそのスキーマのすべてのクラスで該当する関数を検索し、削除します。しかし、この名前での関数が見つからない場合、または複数の同名の関数が見つかった場合、エラー・コードが返されます。関数の削除の結果、クラスが空になる場合、DROP FUNCTION はそのクラスも削除します。
例
以下の例は、クラス User.Employee からの myfunc の削除を試行します。(クラス User.Employee の作成例は、"CREATE TABLE" を参照してください)。
DROP FUNCTION myfunc FROM User.Employee