컨텍스트 함수

컨텍스트 함수 (Context functions)

이 문서는 문(statement)이 실행되는 컨텍스트에 대한 정보를 수집할 수 있게 해주는 컨텍스트 함수 계열을 설명해요. 이 함수들은 문마다 최대 한 번 평가됩니다.

출처: Snowflake SQL Reference

본문

함수 목록 (List of functions)

하위 범주 (Sub-category) 함수 (Function) 참고 (Notes)
일반 컨텍스트 (General context) CURRENT_CLIENT
CURRENT_DATE
CURRENT_IP_ADDRESS
CURRENT_REGION
CURRENT_TIME
CURRENT_TIMESTAMP
CURRENT_VERSION
GETDATE CURRENT_TIMESTAMP의 별칭
LOCALTIME CURRENT_TIME의 별칭
LOCALTIMESTAMP CURRENT_TIMESTAMP의 별칭
SYSDATE
SYSTIMESTAMP
SYS_CONTEXT
세션 컨텍스트 (Session context) ALL_USER_NAMES
CURRENT_ACCOUNT 계정 로케이터(account locator) 반환
CURRENT_ACCOUNT_NAME 계정 이름 반환
CURRENT_ORGANIZATION_NAME
CURRENT_ORGANIZATION_USER
CURRENT_ROLE
CURRENT_AVAILABLE_ROLES
CURRENT_SECONDARY_ROLES
CURRENT_SESSION
CURRENT_STATEMENT
CURRENT_TRANSACTION
CURRENT_USER
GETVARIABLE
SET_SYS_CONTEXT
LAST_QUERY_ID
LAST_TRANSACTION
세션 객체 컨텍스트 (Session object context) CURRENT_DATABASE
CURRENT_ROLE_TYPE
CURRENT_SCHEMA
CURRENT_SCHEMAS
CURRENT_WAREHOUSE
INVOKER_ROLE
INVOKER_SHARE
IS_AGENT_ACTIVATED (SYS_CONTEXT 함수)
IS_DATABASE_ROLE_ACTIVATED (SYS_CONTEXT 함수)
IS_APPLICATION_ROLE_ACTIVATED (SYS_CONTEXT 함수)
IS_APPLICATION_ROLE_IN_SESSION
IS_DATABASE_ROLE_IN_SESSION
IS_GRANTED_TO_INVOKER_ROLE
IS_INSTANCE_ROLE_IN_SESSION
IS_ROLE_ACTIVATED (SYS_CONTEXT 함수)
IS_ROLE_IN_SESSION
POLICY_CONTEXT
알림 컨텍스트 (Alert context) GET_CONDITION_QUERY_UUID
조직 컨텍스트 (Organization context) IS_GROUP_ACTIVATED (SYS_CONTEXT 함수)
IS_GROUP_IMPORTED (SYS_CONTEXT 함수)
IS_USER_IMPORTED (SYS_CONTEXT 함수)

사용 참고 사항 (Usage notes)

  • 컨텍스트 함수는 일반적으로 인자가 필요 없어요(SYS_CONTEXT 제외).
  • ANSI 표준을 준수하기 위해 다음 컨텍스트 함수는 SQL 문에서 괄호 없이 호출할 수 있어요:
    • CURRENT_DATE
    • CURRENT_TIME
    • CURRENT_TIMESTAMP
    • CURRENT_USER
    • LOCALTIME
    • LOCALTIMESTAMP

참고: Snowflake Scripting 변수를 이 함수 중 하나를 호출하는 표현식으로 설정할 때(예: my_var := ();) 괄호를 반드시 포함해야 해요.

예시 (Examples)

세션의 현재 웨어하우스, 데이터베이스, 스키마를 표시합니다:

SELECT CURRENT_WAREHOUSE(), CURRENT_DATABASE(), CURRENT_SCHEMA();
+---------------------+--------------------+------------------+
| CURRENT_WAREHOUSE() | CURRENT_DATABASE() | CURRENT_SCHEMA() |
|---------------------+--------------------+------------------+
| MY_WAREHOUSE | MY_DB | PUBLIC |
|---------------------+--------------------+------------------+

현재 날짜, 시간, 타임스탬프를 표시합니다(이 함수들은 괄호 없이 호출할 수 있다는 점에 주의):

SELECT CURRENT_DATE, CURRENT_TIME, CURRENT_TIMESTAMP;
+--------------+--------------+-------------------------------+
| CURRENT_DATE | CURRENT_TIME | CURRENT_TIMESTAMP |
|--------------+--------------+-------------------------------|
| 2024-06-07 | 10:45:15 | 2024-06-07 10:45:15.064 -0700 |
+--------------+--------------+-------------------------------+

Snowflake Scripting 블록에서 SQL 문 안의 변수를 설정할 때 CURRENT_DATE 함수를 괄호 없이 호출합니다:

EXECUTE IMMEDIATE
$$
DECLARE
 currdate DATE;
BEGIN
 SELECT CURRENT_DATE INTO currdate;
 RETURN currdate;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| 2024-06-07 |
+-----------------+

Snowflake Scripting 블록에서 CURRENT_DATE 함수를 괄호 없이 호출하는 표현식으로 변수를 설정하려 하면 오류가 발생해요:

EXECUTE IMMEDIATE
$$
DECLARE
 today DATE;
BEGIN
 today := CURRENT_DATE;
 RETURN today;
END;
$$
;
000904 (42000): SQL compilation error: error line 5 at position 11
invalid identifier 'CURRENT_DATE'

같은 블록이 괄호를 사용해 함수를 호출하면 현재 날짜를 반환합니다:

EXECUTE IMMEDIATE
$$
DECLARE
 today DATE;
BEGIN
 today := CURRENT_DATE();
 RETURN today;
END;
$$
;
+-----------------+
| anonymous block |
|-----------------|
| 2024-06-07 |
+-----------------+

더 알아보기 (Learn more)

  • 스칼라 함수 (functions)
  • 변환 함수 (functions-conversion)
  • 날짜 및 시간 함수 (functions-date-time)
  • 함수 (functions)