- カテゴリ:
システム関数 (情報)
SYSTEM$REFERENCE¶
オブジェクト(テーブル、ビュー、または関数)への 参照 を返します。オブジェクトへの参照に対して SQL アクションを実行すると、その参照を作成したユーザーのロールを使用してアクションが実行されます。
- こちらもご参照ください。
構文¶
SYSTEM$REFERENCE('<object_type>', '<object_identifier>',
[ , <reference_scope> [ , '<privilege>' [ , '<privilege>' ... ] ] ] )
引数¶
必須
object_type
オブジェクトの型。次の値のいずれかを指定できます。
api_integration
database
external_table
function
materialized_view
pipe
procedure
schema
table
task
view
warehouse
object_identifier
オブジェクトの識別子。識別子にスペースまたは特殊文字が含まれる場合は、文字列全体を二重引用符で囲む必要があります。二重引用符で囲まれた識別子も大文字と小文字が区別されます。
識別子の詳細については、 識別子の要件 をご参照ください。
オプション
reference_scope
参照のスコープを指定します。
これが
CALL
であるか省略された場合、参照は作成されたコンテキスト内で有効であることを指定します。 参照のスコープの指定 をご参照ください。SESSION
の場合は、参照をセッション期間中有効にすることを指定します。PERSISTENT
の場合は、オブジェクトがドロップされるまで参照が有効であることを指定します。 永続的な参照 をご参照ください。注:
privilege
引数を指定する必要がある場合は、reference_scope
引数が必要です。有効な値:
CALL
SESSION
PERSISTENT
デフォルト値:
CALL
privilege
オブジェクトに対して SQL アクションを実行するために必要な追加の 権限。
たとえば、テーブルに行を挿入するストアドプロシージャにテーブルの参照を渡すとします。ストアドプロシージャにそのテーブルに対する INSERT 権限を付与するには、
'INSERT'
を指定します。サポートされるオブジェクトと権限のリストについては、 参照のサポートされるオブジェクト型と権限 をご参照ください。
複数の追加の権限を指定するには、各権限名を追加の引数として関数に渡します。たとえば、 INSERT、 UPDATE、 および TRUNCATE の権限を付与する場合は以下のようにします。
CALL myprocedure( SYSTEM$REFERENCE('TABLE', 'table_with_different_owner', 'SESSION', 'INSERT'. 'UPDATE', 'TRUNCATE'));
権限として OWNERSHIP や ALL は指定できないことに注意してください。
戻り値¶
識別子として使用できる、参照をシリアル化した文字列表現。
使用上の注意¶
object_type
引数は、 object_identifier
で指定されたオブジェクトの型と一致しなければなりません。
トラブルシューティング¶
次のシナリオは、発生する可能性のある問題のトラブルシューティングに役立ちます。
エラー |
505028 (42601): Object type <object_type> does not match the specified type <type_of_the_specified_object> for reference creation
|
---|---|
原因 |
SYSTEM$REFERENCE 関数を使用して参照を作成しようとし、 |
解決策 |
|
例¶
簡単な例 をご参照ください。