GRANT (タイプ特権)
この形式の GRANT ステートメントは、タイプに対する特権を認可します。
呼び出し
このステートメントは、アプリケーション・プログラムに組み込むことができ、また対話式に呼び出すこともできます。 これは、動的に準備できる実行可能ステートメントです。
権限
このステートメントの権限 ID が保持する特権には、少なくとも以下の 1 つ が含まれていなければなりません。
- ステートメント内で識別された、それぞれの特殊タイプまたは配列タイプごとに、
- このステートメントで指定されるすべての特権
- タイプに対する *OBJMGT のシステム権限
- そのタイプを含むライブラリーに対する *EXECUTE システム権限
- データベース管理者権限
- セキュリティー管理者権限
WITH GRANT OPTION を指定する場合、ステートメントの権限 ID によって保持される特権には、 少なくとも次の 1 つが含まれていなければなりません。
- タイプの所有権
- データベース管理者権限
- セキュリティー管理者権限
構文
.-PRIVILEGES-. >>-GRANT--+-ALL--+------------+-+-------------------------------> | .-,---------. | | V | | '---+-ALTER-+-+-------' '-USAGE-' .-,----------------------. V | >--ON -TYPE----+-distinct-type-name-+-+-------------------------> '-array-type-name----' .-,---------------------------------. V | >--TO----+-+-------+--authorization-name-+-+--+-------------------+->< | +-USER--+ | '-WITH GRANT OPTION-' | '-GROUP-' | '-PUBLIC------------------------'
説明
- ALL または ALL PRIVILEGES
- 1 つ以上の特権を認可します。認可される特権は、指定した特殊タイプまたは配列タイプに対してステートメントの権限 ID が持っているすべての認可可能な特権です。タイプに対する ALL PRIVILEGES を認可することは、*ALL システム権限を認可するのと同じではないことに注意する必要があります。
ALL を使用しない場合には、以下にリストしたキーワードの 1 つ以上を使用する必要があります。各キーワードは、そこで説明している特権を認可します。
- ALTER
- COMMENT および LABEL ステートメントを使用するための特権を認可します。
- USAGE
- 表、関数、プロシージャー、CAST 式の中でタイプを使用するための特権を付与します。
- ON TYPE distinct-type-nameまたはarray-type-name
- 特権が認可される特殊タイプまたは配列タイプを指定します。特殊タイプ名 または配列タイプ名 は、現行サーバーに存在するユーザー定義タイプを識別する必要があります。
- TO
- 特権を認可するユーザーを指定します。
- USER
- authorization-name がユーザー・プロファイルであることを指定します。USER が指定される場合、authorization-name はグループ・プロファイルであってはなりません。
- GROUP
- authorization-name がグループ・プロファイルであることを指定します。GROUP が指定される場合、authorization-name は ユーザー・プロファイルであってはなりません。
- authorization-name,…
- 1 つ以上の権限 ID をリストします。
- PUBLIC
- ユーザー (権限 ID) の集合に対して特権を認可します。詳しくは、権限、特権、およびオブジェクト所有権を参照してください。
- WITH GRANT OPTION
- 指定した権限名 が、ON 文節で指定されているタイプに対する特権を他のユーザーに認可できるようにします。
WITH GRANT OPTION の指定がない場合は、指定した権限名 は、 USAGE 特権を別のユーザーに認可することができません。 ただし、指定した権限名が、他の何らかの方法で認可できる権限を 入手した場合 (例えば、*OBJMGT システム権限の認可) を除きます。
注
対応するシステム権限: GRANT および REVOKE ステートメントは、SQL オブジェクトに対するシステ ム権限の割り当ておよび除去を行います。 次の表は、SQL 特権に対応するシステム権限を示しています。
SQL の特権 | ユーザー定義タイプに対する認可または取り消しに対応するシステム権限 |
---|---|
ALL (ALL の認可または取り消しは、ステートメントの権限 ID が持つ特権の みを認可または取り消します。) | *OBJALTER |
ALTER | *OBJALTER |
USAGE | *EXECUTE |
WITH GRANT OPTION | *OBJMGT |
ユーザー定義タイプへの権限を検査する際の対応するシステム権限: 次の表は、タイプへの権限を検査する際の、SQL 特権に対応するシステム権限を示しています。左側の欄は、SQL 特権をリストしています。 右側の欄は、同等のシステム権限をリストしています。
SQL の特権 | ユーザー定義タイプに対する認可または取り消しに対応するシステム権限 |
---|---|
ALTER | *OBJALTER |
USAGE | *EXECUTE および *OBJOPR |
USAGE 特権が必要な場合: SQL ステートメント (例えば、CAST 仕様を含むステートメントや CREATE TABLE ステートメント) でタイプが明示的に参照されている場合、USAGE 特権が必要です。タイプが間接的に参照される場合、USAGE 特権は必要ありません。例えば、ビューが特殊データ・タイプを有する表の列を参照する場合などです。
代替構文: 以下のキーワードは、旧リリースとの互換性を維持するためにサポートされている同義語です。 これらのキーワードは標準キーワードではないので、原則として使用しないようにしてください。
- キーワード DATA TYPE または DISTINCT TYPE を TYPE の同義語として使用することができます。
例
特殊タイプ SHOE_SIZE に関する USAGE 特権をユーザー JONES に認可します。 この GRANT ステートメントでは、JONES に、特殊タイプ SHOE_SIZE に関連するキャスト関数を実行する特権は与えません。
GRANT USAGE
ON DISTINCT TYPE SHOE_SIZE
TO JONES