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

语言: 中文