IS_DATABASE_ROLE_ACTIVATED
IS_DATABASE_ROLE_ACTIVATED (SYS_CONTEXT 함수)
데이터베이스 역할이 활성화되어 있으면 VARCHAR 값 'TRUE'를 반환해요. 세션 컨텍스트 또는 현재 실행 컨텍스트에서 활성화 여부를 확인할 수 있어요.
본문
구문
세션에서 데이터베이스 역할 활성화를 확인합니다.
SYS_CONTEXT(
'SNOWFLAKE$SESSION' ,
'IS_DATABASE_ROLE_ACTIVATED' ,
'<database_role>'
)
현재 실행 컨텍스트에서 데이터베이스 역할 활성화를 확인합니다.
SYS_CONTEXT(
'SNOWFLAKE$CURRENT' ,
'IS_DATABASE_ROLE_ACTIVATED' ,
'<database_role>'
)
인자
'SNOWFLAKE$SESSION'
- 세션 컨텍스트에서 데이터베이스 역할 활성화를 확인하고 싶다고 지정해요.
'SNOWFLAKE$CURRENT'
- 현재 실행 컨텍스트에서 데이터베이스 역할 활성화를 확인하고 싶다고 지정해요. 현재 실행 컨텍스트는 소유자 권한 실행문 안이나 에이전트 호출 중에는 세션 컨텍스트와 다를 수 있어요. 자세한 내용은 SYS_CONTEXT (SNOWFLAKE$CURRENT namespace) 문서를 참고하세요.
'IS_DATABASE_ROLE_ACTIVATED'
- IS_DATABASE_ROLE_ACTIVATED 함수를 호출해요.
'database_role'
- 확인할 데이터베이스 역할을 지정해요. 이름은 완전히 한정되거나 상대적일 수 있어요.
반환 값
이 함수는 다음 VARCHAR 값 중 하나를 반환해요.
- 지정한 데이터베이스 역할이 지정한 컨텍스트의 활성 역할 계층에 있으면 'TRUE'.
- 지정한 데이터베이스 역할이 활성 역할 계층에 없거나, 데이터베이스 역할이 존재하지 않으면 'FALSE'.
이 반환 값을 BOOLEAN 값 TRUE 또는 FALSE와 비교하려면 반환 값을 BOOLEAN으로 캐스팅하세요. 예를 들어:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_DATABASE_ROLE_ACTIVATED', 'my_db_role')::BOOLEAN = TRUE;
2026_06 동작 변경 번들
계정에서 2026_06 동작 변경 번들을 활성화해도 이 함수는 BOOLEAN이 아니라 VARCHAR(문자열 'TRUE' 또는 'FALSE')를 계속 반환해요.
기존 캐스팅(예: ::BOOLEAN 또는 ::NUMBER)은 계속 그대로 동작해요.
네임스페이스별 모든 속성과 함수의 반환 타입은 SYS_CONTEXT return types 문서를 참고하세요.
사용 시 참고 사항
- SNOWFLAKE$SESSION 네임스페이스를 사용하면 함수는 데이터베이스 역할이 세션의 기본 또는 보조 역할의 역할 계층에 있는지 확인해요.
- SNOWFLAKE$CURRENT 네임스페이스를 사용하면 함수는 가장 안쪽 실행 컨텍스트를 확인해요. 예를 들어 소유자 권한 저장 프로시저 안에서는 호출자의 활성 역할이 아니라 소유자의 활성 역할을 반영해요.
- 이 함수는 공유 테이블에 적용된 거버넌스 정책(마스킹 정책, 행 접근 정책, 프로젝션 정책 등)에서는 지원되지 않아요. 공유 개체는 소비자 세션 상태에 접근할 수 없어요.
- 완전히 한정된 이름을 지정하지 않으면 함수는 데이터베이스 역할의 데이터베이스 컨텍스트를 다음과 같이 해석해요. 쿼리: 세션 데이터베이스(현재 사용 중인 데이터베이스). 데이터 보호 정책 본문: 보호 대상 테이블 또는 뷰를 포함한 데이터베이스. 공유: 소비자 계정의 데이터베이스.
- 이 함수는 결정적(deterministic)이지 않으므로 구체화된 뷰 정의에서는 사용할 수 없어요.
- 정책에서 이 함수의 결과를 시뮬레이션하려면 POLICY_CONTEXT 함수와 함께 SNOWFLAKE$SESSION_ACTIVATED_DATABASE_ROLES 또는 SNOWFLAKE$CURRENT_ACTIVATED_DATABASE_ROLES 목록 인자를 사용하세요.
예시
상대 이름을 사용해 현재 데이터베이스에서 데이터베이스 역할을 확인합니다.
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 |
+-------------------------------------------------------------------------+
현재 실행 컨텍스트에서 데이터베이스 역할을 확인합니다(소유자 권한 실행문 안에서는 세션 컨텍스트와 다를 수 있어요).
SELECT SYS_CONTEXT('SNOWFLAKE$CURRENT', 'IS_DATABASE_ROLE_ACTIVATED', 'ANALYST_ROLE');
더 알아보기
- Context functions — 컨텍스트 함수 모음
- IS_ROLE_ACTIVATED (SYS_CONTEXT function) — 역할 활성화 여부 확인
- SYS_CONTEXT (SNOWFLAKE$CURRENT) — 현재 실행 컨텍스트 정보 반환
- SYS_CONTEXT (SNOWFLAKE$SESSION) — 세션 컨텍스트 정보 반환