カテゴリ:

システム関数 (情報)

SYSTEM$REFERENCE

オブジェクト(テーブル、ビュー、または関数)への 参照 を返します。オブジェクトへの参照に対して SQL アクションを実行すると、その参照を作成したユーザーのロールを使用してアクションが実行されます。

こちらもご参照ください。

SYSTEM$QUERY_REFERENCE

構文

SYSTEM$REFERENCE('<object_type>', '<object_identifier>',
  [ , <reference_scope> [ , '<privilege>' [ , '<privilege>' ... ] ] ] )
Copy

引数

必須

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'));
Copy

権限として 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 関数を使用して参照を作成しようとし、 object_type 引数が object_identifier で指定されたオブジェクトの型と一致しない場合、この関数は失敗します。たとえば、 object_type 引数が TABLE であるにもかかわらず、 object_identifier が TABLE 以外のオブジェクト型(例: VIEW)に解決される場合、この関数は失敗します。

解決策

object_identifier で指定されたオブジェクトの型が object_type 引数と一致することを確認します。サポートされるオブジェクトの型のリストは、 参照のサポートされるオブジェクト型と権限 をご参照ください。

簡単な例 をご参照ください。