GRANT文(機能またはプロシージャの権限)
この形式の GRANT ステートメントは、ユーザー定義関数、特殊タイプ用に生成される cast 関数、配列タイプ、およびストアード・プロシージャーに対する特権を付与します。
GRANT(機能またはプロシージャの権限)の構文
- 1 AS LOCATOR は、LOB データ型または LOB データ型に基づく別個の型に対してのみ指定できます。
- 2 このフラグメントの構文図については、 組み込み型の構文を参照のこと。
- 3 array-type-nameはコンパイル済みSQLスカラー関数でのみサポートされます。
GRANT(関数またはプロシージャの権限)の説明
- EXECUTE
- 指定されたユーザー定義関数、特殊タイプ 用に生成された cast 関数、またはストアード・プロシージャーを実行する特権を付与します。
- function-designator
特権を付与する対象の関数を指定します。 指定された関数は、現行サーバーに存在するものでなければなりません。また、CREATE FUNCTION ステートメントを用いて定義された 関数、または CREATE TYPE ステートメントによって生成された cast 関数でなければなりません。 関数は、名前、関数シグニチャー、または特定名によって指定できます。 function-designatorは、SQL関数をその名前、関数を一意に識別する関数シグネチャ、または特定の名前によって識別します。 詳細については、「 ファンクション・デジグネータ 」を参照のこと。
非修飾関数名にアスタリスク (*) を指定できます。 修飾または非修飾の function-name として関数を識別できます。 例えば、* は、現在存在しないものも含め、デフォルトのスキーマ内のすべての関数に対する特権を付与することを示します。 schema-name.* 指定されたスキーマ内のすべての関数 (現在存在しない関数を含む) に対して特権が付与されることを示します。 * または schema-name.* の場合、SYSADM 権限が必要です。 が指定されています。 アスタリスクを指定しても、関数に関して既に付与されている EXECUTE 特権に影響はありません。
関数が表パラメーターを使用して定義された場合 (CREATE FUNCTION ステートメントで LIKE TABLE name AS LOCATOR 文節を指定して、いずれかの入力パラメーターが遷移表であることが示されている場合) には、関数シグニチャーを使用して関数を一意的に指定することはできません。 その代わりに、他の構文バリエーションの 1 つを使用して、その関数名 (固有であれば)、または 特定名を持つ関数を指定します。
- PROCEDURE 手順名
現行サーバーで定義されているストアード・プロシージャーを指定します。 名前 (暗黙的または明示的スキーマ名を含む) は、現行サーバーに存在するストアード・プロシージャーを示す ものでなければなりません。
非修飾プロシージャー名にアスタリスク (*) を指定できます。 修飾または非修飾の procedure-name としてプロシージャーを識別できます。 例えば、* は、現在存在しないものも含め、デフォルトのスキーマ内のすべてのプロシージャーに対する特権を付与することを示します。 schema-name.* 指定されたスキーマ内のすべてのプロシージャー (現在存在しないプロシージャーを含む) に対する特権が付与されることを示します。 * または schema-name.* の場合、SYSADM 権限が必要です。 が指定されています。 アスタリスクを指定しても、プロシージャーに関して既に付与されている EXECUTE 特権に影響はありません。
- 今後
- TO句の説明については、GRANT文を参照してください。
- WITH GRANT OPTION
- WITH GRANT OPTION句の説明については、GRANT文を参照してください。
GRANT(関数またはプロシージャの権限)の例
ユーザーJONESに関数CALC_SALARYのEXECUTE権限を与えます。 スキーマ中に CALC_SALARY という名前の関数が 1 つだけ含まれていると想定しています。
GRANT EXECUTE ON FUNCTION CALC_SALARY TO JONES;- 現在のサーバーのすべてのユーザーに、プロシージャVACATION_ACCRのEXECUTE権限を付与します。
GRANT EXECUTE ON PROCEDURE VACATION_ACCR TO PUBLIC; DEPT_TOTALS関数のEXECUTE権限を管理アシスタントに付与し、そのアシスタントにこの関数のEXECUTE権限を他の人に付与する権限を与える。 この関数には DEPT85_TOT という特定の名前があります。 このスキーマに、名前が DEPT_TOTALS である関数が複数あるものと仮定します。
GRANT EXECUTE ON SPECIFIC FUNCTION DEPT85_TOT TO ADMIN_A WITH GRANT OPTION;関数NEW_DEPT_HIRESのEXECUTE権限をHR(人事部)に付与する。 この関数には、データ・タイプがそれぞれ INTEGER と CHAR(10) である 2 つの入力パラメーターが あります。 このスキーマに、名前が NEW_DEPT_HIRES である関数が複数あるものと仮定します。
GRANT EXECUTE ON FUNCTION NEW_DEPT_HIRES (INTEGER, CHAR(10)) TO HR;また、CHAR(10) データ・タイプを CHAR() とコーディングすることもできます。
関数FIND_EMPDEPTのEXECUTE権限をロール ROLE1:
GRANT EXECUTE ON FUNCTION FIND_EMPDEPT TO ROLE ROLE1;
