- 类别:
:doc:`/sql-reference/functions-system`(信息)
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 函数创建引用,而 |
解决方案 |
验证 |
示例¶
请参阅 简单示例。