컨텍스트 함수
컨텍스트 함수 (Context functions)
이 문서는 문(statement)이 실행되는 컨텍스트에 대한 정보를 수집할 수 있게 해주는 컨텍스트 함수 계열을 설명해요. 이 함수들은 문마다 최대 한 번 평가됩니다.
본문
함수 목록 (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_DATECURRENT_TIMECURRENT_TIMESTAMPCURRENT_USERLOCALTIMELOCALTIMESTAMP
참고: 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)