IS_DATABASE_ROLE_ACTIVATED(SYS_CONTEXT 函数)
如果在当前会话中激活了数据库角色,则返回 VARCHAR 值 'TRUE'。
- 另请参阅:
SYS_CONTEXT(SNOWFLAKE$SESSION 命名空间)
IS_ROLE_ACTIVATED(SYS_CONTEXT 函数)
语法
SYS_CONTEXT(
'SNOWFLAKE$SESSION' ,
'IS_DATABASE_ROLE_ACTIVATED' ,
'<database_role>'
)
实参
'SNOWFLAKE$SESSION'指定您要调用函数以返回有关当前会话的上下文信息。
'IS_DATABASE_ROLE_ACTIVATED'调用 IS_DATABASE_ROLE_ACTIVATED 函数。
'database_role'指定要检查的数据库角色。该名称可以是完全限定名称,也可以是相对名称。
返回
该函数返回以下 VARCHAR 值之一:
要将此返回值与 BOOLEAN 值 TRUE 或 FALSE 进行比较,请将返回值 转换 为 BOOLEAN。例如:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'my_db_role')::BOOLEAN = TRUE;
使用说明
此功能在应用于共享表的治理策略(例如掩码策略、行访问策略或投影策略)中不受支持。共享对象无法访问使用者会话状态。
若不指定完全限定名称,函数将按如下方式确定数据库角色的数据库上下文:
此函数不能用于物化视图定义,因为该函数不是确定性的。
示例
使用相对名称检查当前数据库中的数据库角色:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANALYST_ROLE');
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'ANA... |
+-------------------------------------------------------------------------+
| TRUE |
+-------------------------------------------------------------------------+
使用完全限定名称检查其他数据库中的数据库角色:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB2.READER_ROLE');
+-------------------------------------------------------------------------+
| SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'DB ... |
+-------------------------------------------------------------------------+
| TRUE |
+-------------------------------------------------------------------------+