UDTUSAGE権限を持つユーザーは、表またはビューにUDTを使用し、そのUDTにのみ関連付けられているすべてのメソッドを実行することができます。それらのメソッドは、UDTの作成や削除、メソッドの作成や更新や削除、あるいは順序付け、キャスト、または変換機能に関するUDTの動作の変更は行なえません。
UDTUSAGE権限はデータベース レベルまたはUDTオブジェクト レベルでのみ付与することができます。
アクセス許可のレベル | UDTUSAGEを与える必要がある場所 |
---|---|
データベース | SYSUDTLIBデータベースのみ。 |
UDTオブジェクト | UDTの名前。 |
- 特定のUDTを使用する列を含むテーブルに対しての、CREATE TABLEまたはALTER TABLE。
- 問合わせ、UDF、またはプロシージャ内で特定のUDTを参照する。
- 特定のUDTにのみ関連付けられているすべてのメソッドを実行する。
その他のUDTに関連するメソッドを実行するには、それらのUDTに対するUDTUSAGE権限も必要となります。
入れ子のSTRUCTURED型UDTに関しては、権限がその親から自動的には継承されないことに注意してください。例えば、最上位レベルのSTRUCTURED型UDT属性に対するUDTUSAGEが付与されている場合には、表作成操作でその型の列を指定することができます。しかし、UDTUSAGE権限が付与されていたとしても、UDTの下位の層に含まれるすべての構造化属性に対してオブザーバー メソッドやミュテーター メソッドを使用できるわけではなく、それら下位の層の属性に対して定義されているメソッドを呼び出すこともできません。
こうした操作を可能にするには、入れ子UDT型の個々のUDTコンポーネントに対して明示的にUDTUSAGEを付与するか、またはSYSUDTLIBデータベースに対して明示的にUDTUSAGEを付与する必要があります。
UDTUSAGEは自動的に付与される権限ではありません。ユーザーはこの権限を、明示的に付与されるか、またはロールによって取得する必要があります。UDTUSAGEをWITH GRANT OPTION付きで付与されたユーザーは、他のユーザーにUDTUSAGE権限を付与することができ、任意にWITH GRANT OPTION付きで付与することもできます。
UDTUSAGEは、UUテーブルのAccessRight列にコードDBC.AccessRightsで表わされます。
ユーザーDBCには、SYSUDTLIBデータベースに対する暗黙のUDT権限があります。
それ以外のすべてのユーザーまたはロールがSYSUDTLIB内のUDTに関連するオブジェクトにアクセスする必要がある場合には、まずSYSUDTLIBに対するまたはSYSUDTLIBデータベース内の特定のUDTに対する適切なUDT権限をそれらのユーザーやロールに明示的に付与する必要があります。
- SYSUDTLIBデータベースに対するUDTUSAGEをユーザーtester1に付与。
- area()という名前のUDTに対するUDTUSAGEをユーザーtester3に付与。
- データベースSYSUDTLIB内のSYSUDTLIBという名前のUDTに対するUDTUSAGEをユーザーtester4に付与。
GRANT UDTUSAGE ON SYSUDTLIB TO tester1; GRANT UDTUSAGE ON TYPE circle TO tester3; GRANT UDTUSAGE ON TYPE SYSUDTLIB.square TO tester4;