IS_ROLE_ACTIVATED
IS_ROLE_ACTIVATED (SYS_CONTEXT 함수)
계정 역할이 활성화되어 있으면 VARCHAR 값 'TRUE'를 반환해요. 한 번의 호출로 하나 또는 여러 역할을 확인할 수 있고, 세션 컨텍스트 또는 현재 실행 컨텍스트에서 활성화 여부를 확인할 수 있어요.
참조: IS_DATABASE_ROLE_ACTIVATED (SYS_CONTEXT 함수), SYS_CONTEXT (SNOWFLAKE$CURRENT 네임스페이스), SYS_CONTEXT (SNOWFLAKE$SESSION 네임스페이스)
본문
구문
세션에서 역할 활성화 확인:
SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_ROLE_ACTIVATED', '<role>' [, '<role>' ... ])
현재 실행 컨텍스트에서 역할 활성화 확인:
SYS_CONTEXT('SNOWFLAKE$CURRENT', 'IS_ROLE_ACTIVATED', '<role>' [, '<role>' ... ])
인자
'SNOWFLAKE$SESSION'
세션 컨텍스트에서 역할 활성화를 확인하려는 것을 지정해요.
'SNOWFLAKE$CURRENT'
현재 실행 컨텍스트에서 역할 활성화를 확인하려는 것을 지정해요. 현재 실행 컨텍스트는 소유자 권한 실행 파일 안이나 에이전트 호출 중에는 세션 컨텍스트와 다를 수 있어요. 자세한 내용은 SYS_CONTEXT (SNOWFLAKE$CURRENT 네임스페이스)를 참고해요.
'IS_ROLE_ACTIVATED'
IS_ROLE_ACTIVATED 함수를 호출해요.
'
확인할 계정 역할을 지정해요. 하나의 역할 또는 여러 역할을 별도의 인자로 전달할 수 있어요. 지정된 역할 중 하나라도 활성화되어 있으면 함수는 'TRUE'를 반환해요. 여러 역할은 상수 값이어야 해요(사용상 주의사항 참고).
반환 값
이 함수는 다음 VARCHAR 값 중 하나를 반환해요:
- 지정된 컨텍스트에서 지정된 계정 역할 중 하나라도 활성화되어 있으면
'TRUE'. - 지정된 계정 역할 중 어느 것도 활성화되어 있지 않거나, 지정된 역할이 존재하지 않으면
'FALSE'.
이 반환 값을 BOOLEAN 값 TRUE 또는 FALSE와 비교하려면 반환 값을 BOOLEAN으로 캐스트해요. 예를 들어:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_ROLE_ACTIVATED', 'my_role')::BOOLEAN = TRUE;
2026_06 동작 변경 번들
계정에서 2026_06 동작 변경 번들이 활성화되면 SYS_CONTEXT를 통해 이 함수를 호출할 때 VARCHAR 문자열 'TRUE' 또는 'FALSE' 대신 BOOLEAN을 반환해요.
::BOOLEAN 또는 ::NUMBER 같은 기존 캐스트는 변경 없이 계속 동작해요.
네임스페이스별 모든 속성과 함수의 반환 타입에 대해서는 SYS_CONTEXT return types를 참고해요.
사용상 주의사항
- SNOWFLAKE$SESSION 네임스페이스를 사용하면 함수는 세션의 기본 또는 보조 역할 역할 계층에 역할이 있는지 확인해요.
- SNOWFLAKE$CURRENT 네임스페이스를 사용하면 함수는 가장 안쪽 실행 컨텍스트를 확인해요. 예를 들어 소유자 권한 저장 프로시저 안에서는 호출자의 역할이 아니라 소유자의 활성화된 역할을 반영해요.
- 둘 이상의 역할을 지정하면 함수는 역할 중 하나라도 활성화되어 있으면
'TRUE'를 반환해요. Snowflake는 중복 역할 이름을 무시해요. - 각 역할이 문자열 리터럴 같은 상수 값일 때만 여러 역할을 지정할 수 있어요. 행 접근 정책의 열 참조처럼 상수가 아닌 표현식인 역할을 지정할 때는 단일 역할만 지정할 수 있어요.
- 정책에서 이 함수의 결과를 시뮬레이션하려면 POLICY_CONTEXT 함수와 함께 SNOWFLAKE$SESSION_ACTIVATED_ROLES 또는 SNOWFLAKE$CURRENT_ACTIVATED_ROLES 리스트 인자를 사용해요.
예시
다음 예시는 세션의 기본 또는 보조 역할 역할 계층에 my_role 역할이 있으면 'TRUE'를 반환해요:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_ROLE_ACTIVATED', 'my_role');
다음 예시는 현재 실행 컨텍스트에서 analyst 역할이 활성화되어 있는지 확인해요:
SELECT SYS_CONTEXT('SNOWFLAKE$CURRENT', 'IS_ROLE_ACTIVATED', 'analyst');
다음 예시는 한 번의 호출로 여러 역할을 확인해요. 세션에서 analyst, auditor, reviewer 역할 중 하나라도 활성화되어 있으면 'TRUE'를 반환해요:
SELECT SYS_CONTEXT('SNOWFLAKE$SESSION', 'IS_ROLE_ACTIVATED', 'analyst', 'auditor', 'reviewer');
더 알아보기
- Context functions (General) — 컨텍스트 함수 모음
- IS_DATABASE_ROLE_ACTIVATED (SYS_CONTEXT 함수) — 데이터베이스 역할 활성화 확인
- SYS_CONTEXT (SNOWFLAKE$CURRENT 네임스페이스) — 현재 실행 컨텍스트