- 카테고리:
컨텍스트 함수 (세션)
SET_SYS_CONTEXT¶
:doc:`sys_context`를 사용하여 나중에 검색할 수 있는 지정된 네임스페이스의 지정된 키에 대한 값을 설정합니다.
이 함수에는 다음의 두 가지 작동 모드가 있습니다.
**변경할 수 없는 세션 특성**(
SNOWFLAKE$SESSION_ATTRIBUTES네임스페이스): 설정하면 변경할 수 없고 세션 기간 동안 지속되는 사용자 지정 세션 특성을 설정합니다. 애플리케이션 컨텍스트, 사용자 특성 또는 감사 정보와 같은 세션에 대한 메타데이터를 추적하는 데 유용합니다.**세션 변수**(기타 네임스페이스): SET 명령처럼 동작하며 업데이트할 수 있는 세션 변수를 설정합니다. 변수의 이전 값을 반환합니다.
구문¶
인자¶
'namespace'키-값 페어를 저장할 네임스페이스입니다. 지원되는 네임스페이스:
'key'설정할 특성 또는 변수의 이름입니다. 모든 키 이름은 **대/소문자를 구분**합니다.
'value'할당할 값입니다. 값은 문자열이거나 문자열로 평가되는 식이어야 합니다.
반환¶
이 함수는 VARCHAR 값을 반환합니다.
SNOWFLAKE$SESSION_ATTRIBUTES네임스페이스의 경우: 항상 NULL을 반환합니다(변경할 수 없는 특성은 이전 값을 가질 수 없으므로). 현재 세션에서 특성이 이미 설정된 경우 함수는 오류를 대신 발생시킵니다.다른 네임스페이스의 경우: 세션 변수의 이전 값을 반환하거나 변수가 이전에 존재하지 않은 경우 NULL입니다. 이는 SET 명령의 동작과 일치합니다.
액세스 제어 요구 사항¶
사용자 지정 세션 속성을 설정하는 데는 특별한 권한이 필요하지 않습니다. 모든 사용자는 자신의 세션에서 특성을 설정할 수 있습니다.
사용법 노트¶
SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스(불변 특성)의 경우:
특성은 변경할 수 없습니다. 특성이 설정되면 다시 설정하려고 시도하는 경우(동일한 값으로 설정하더라도) 오류가 발생합니다.
특성 이름은 **대/소문자를 구분**합니다.
app_context,App_Context및 ``APP_CONTEXT``는 3가지 다른 특성으로 처리됩니다.특성은 **세션 범위**입니다. 세션 기간 동안 지속되며 다른 세션에는 표시되지 않습니다.
특성 값을 검색하려면 SYS_CONTEXT(SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스): ``SYS_CONTEXT(‘SNOWFLAKE$SESSION_ATTRIBUTES’, ‘<key>’)``를 사용합니다.
기타 네임스페이스(세션 변수)의 경우:
변수 이름은 **대/소문자를 구분**합니다.
user_id및 ``USER_ID``는 다른 변수로 처리됩니다.변수는 **업데이트**할 수 있습니다. 이미 존재하는 변수를 설정하면 이전 값이 반환되고 새 값으로 업데이트됩니다.
네임스페이스(제공되는 경우)는 접두사로 사용되며, ``SET_SYS_CONTEXT(‘myns’, ‘mykey’, ‘val’)``는 ``myns.mykey``라는 변수를 생성합니다.
변수는 변수를 설정할 때 사용한 정확한 대/소문자를 포함한 ``SYS_CONTEXT(‘<namespace>’, ‘<key>’)``를 사용하여 검색할 수 있습니다.
일반 노트:
셸에서 큰따옴표로 묶인 문자열에 함수 호출을 지정하는 경우
$문자를 백슬래시(\)로 이스케이프하여 ``$session_attributes``이 셸 변수로 해석되지 않습니다.
예¶
예 1: 변경할 수 없는 세션 특성(SNOWFLAKE$SESSION_ATTRIBUTES 네임스페이스)
사용자 지정 특성을 설정하여 애플리케이션 컨텍스트를 추적합니다.
특성 값을 검색합니다(참고: 특성 이름은 대/소문자를 구분함).
특성이 설정되면 이를 변경하려고 시도하는 경우 오류가 발생합니다.
특성 이름은 대/소문자를 구분합니다.
예제 2: 세션 변수(기타 네임스페이스)**
네임스페이스 접두사로 세션 변수를 설정합니다.
변수는 제공된 정확한 대/소문자(myapp.user_id)로 저장됩니다. 이를 검색합니다.
변수를 업데이트합니다(이전 값 반환).