GRANT文(機能またはプロシージャの権限)

この形式の GRANT ステートメントは、ユーザー定義関数、特殊タイプ用に生成される cast 関数、配列タイプ、およびストアード・プロシージャーに対する特権を付与します。

GRANT(機能またはプロシージャの権限)の構文

構文図を読むビジュアルシンタックスダイアグラムをスキップするGRANTEXECUTEONfunction-designatorPROCEDURE,procedure-name*TO ,authorization-nameROLErole-namePUBLIC WITH GRANT OPTION
function-designator:
構文図を読むビジュアルシンタックスダイアグラムをスキップするFUNCTION,function-name(,parameter-type)*SPECIFIC FUNCTION,specific-name
parameter-type:
構文図を読むビジュアルシンタックスダイアグラムをスキップするData-typeAS LOCATOR1
データ・タイプ:
構文図を読むビジュアルシンタックスダイアグラムをスキップするbuilt-in-type2distinct-type-namearray-type-name3
注:
  • 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;