NULL(Snowflake Scripting)¶
NULL은 “no-op”(작업 없음) 문으로 사용할 수 있습니다.
참고
NULL을 문으로 사용하는 것은 흔치 않은 일입니다. NULL은 보통 문 보다는 값 으로 사용됩니다.
값으로서, NULL은 “값 없음”을 의미합니다. 자세한 내용은 SQL NULL 에 대한 Wikipedia 자료 를 참조하십시오.
JSON 과 같은 반정형 데이터 타입 을 사용할 때, NULL을 SQL 값으로 취급하는 것과 NULL을 JSON 값(“베리언트 null”이라고도 함)으로 취급하는 것을 구분해야 할 수 있습니다.
참고
이 Snowflake Scripting 구문은 Snowflake Scripting 블록 내에서만 유효합니다.
구문¶
NULL;
사용법 노트¶
NULL 문은 Snowflake Scripting 스크립트 내에서만 실행할 수 있습니다.
예외 처리기의 NULL 문은 상위 수준 처리기가 없는 경우에 코드가 중단되지 않고 계속 실행되도록 보장해 줍니다.
분기의 NULL 문은 아무것도 하지 않지만, 코드 작성자가 분기가 실행될 조건을 명시적으로 고려했음을 독자에게 알려주는 역할을 합니다. 즉, NULL은 분기 조건을 간과하거나 우연히 누락하지 않았다는 점을 보여줍니다.
NULL 문을 사용하기 전에 대안을 고려하십시오.
예를 들어 예외 처리기로 저장 프로시저를 작성한다고 가정하겠습니다. 대부분의 저장 프로시저에서는 각각의 비 예외 코드 경로가 값을 반환해야 하는 경우에 예외 처리기를 수반하는 각 코드 경로 역시 값을 반환해야 합니다. 그러한 경우에는 NULL 문을 실행하지 마십시오. 대신에 NULL, 빈 결과 세트 또는 오류 표시기를 명시적으로 반환해 보십시오.
예¶
다음 코드에서는 예외 처리기에 NULL 문을 사용하여 예외가 (호출자에게 전달되지는 않고) 포착되지만 아무런 구체적인 작업도 수행되지 않도록 합니다.
CREATE PROCEDURE null_as_statement()
RETURNS VARCHAR
LANGUAGE SQL
AS
$$
BEGIN
SELECT 1 / 0;
RETURN 'If you see this, the exception was not thrown/caught properly.';
EXCEPTION
WHEN OTHER THEN
NULL;
END;
$$
;
CALL null_as_statement();
+-------------------+
| NULL_AS_STATEMENT |
|-------------------|
| NULL |
+-------------------+
참고
CALL 문에서 반환되는 NULL 값은 예외의 NULL 문이 직접적인 원인이 아니며, 대신에 저장 프로시저가 명시적 RETURN 문을 실행하지 않았으므로 NULL이 반환되는 것입니다.
예외 처리기의 각 분기를 포함하여, 저장 프로시저가 명시적으로 값을 반환하도록 하는 것이 좋습니다.