SYSTEM$REFERENCE 関数: オブジェクト型が一致しない参照の作成に失敗

注意

この動作変更は2023_08バンドルにあります。

バンドルの現在のステータスについては、 バンドル履歴 をご参照ください。

SYSTEM$REFERENCE 関数を使用して、オブジェクトへの 参照 を作成できます。参照は、ストアドプロシージャ、クラスインスタンス、または他の方法ではオブジェクトにアクセスできないアプリケーションに対して、オブジェクトへのアクセスを許可します。この参照は、所有者の権限のあるストアドプロシージャ、クラスインスタンス、またはオブジェクトに対する特定の限定された権限を持つアプリケーションに識別子として渡されます。

SYSTEM$REFERENCE 関数の object_type 引数は、参照が識別するオブジェクトの型と一致する必要があります。以下の例では、 t1 はテーブルで、 TABLE オブジェクト型と一致します。

SELECT SYSTEM$REFERENCE('TABLE', 't1', 'SESSION', 'SELECT');
Copy

SYSTEM$REFERENCE 関数は以下のように動作します。

変更前

SYSTEM$REFERENCE 関数を使用して参照を作成し、 object_type 引数が TABLE で、オブジェクト名がテーブルのようなオブジェクト型 (つまり、 TABLE 、 VIEW 、 EXTERNAL TABLE 、または MATERIALIZED VIEW) に解決される場合、関数は 成功 します。

変更後

SYSTEM$REFERENCE 関数を使用して参照を作成しようとし、 object_type 引数が TABLE であるにもかかわらず、オブジェクト名が TABLE 以外のテーブルのようなオブジェクト型に解決される場合 (つまり、 VIEW 、 EXTERNAL TABLE 、または MATERIALIZED VIEW)、この関数は 失敗 します。

例えば、 v1 ビューに TABLE オブジェクト型を使用する場合、次のように記述します。

SELECT SYSTEM$REFERENCE('TABLE', 'v1', 'SESSION', 'SELECT');
Copy

このステートメントにより、次のエラーが発生します。

505028 (42601): Object type VIEW does not match the specified type TABLE for reference creation

参照: 1315