- 카테고리:
컨텍스트 함수 (일반)
IS_DATABASE_ROLE_ACTIVATED(SYS_CONTEXT 함수)¶
데이터베이스 역할이 현재 세션에서 활성화된 경우 VARCHAR 값 ``’TRUE’``를 반환합니다.
구문¶
SYS_CONTEXT(
'SNOWFLAKE$SESSION' ,
'IS_DATABASE_ROLE_ACTIVATED' ,
'<database_role>'
)
인자¶
'SNOWFLAKE$SESSION'현재 세션에 대한 컨텍스트 정보를 반환하는 함수를 호출하도록 지정합니다.
'IS_DATABASE_ROLE_ACTIVATED'IS_DATABASE_ROLE_ACTIVATED 함수를 호출합니다.
'database_role'확인할 데이터베이스 역할을 지정합니다. 이름은 정규화된 이름이거나 상대 이름일 수 있습니다.
반환¶
이 함수는 다음 VARCHAR 값 중 하나를 반환합니다.
현재 사용자의 활성 기본 역할 또는 세션의 보조 역할이 지정된 데이터베이스 역할의 권한을 상속하는 경우 ``’TRUE’``를 반환합니다.
지정된 데이터베이스 역할이 사용자의 활성 역할 계층 구조에 없거나 데이터베이스 역할이 존재하지 않는 경우 ``’FALSE’``를 반환합니다.
이 반환 값을 BOOLEAN 값 TRUE 또는 FALSE와 비교하려면 반환 값을 :ref:`캐스트<label-data_type_explicit_casting>`하여 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 |
+-------------------------------------------------------------------------+