DECLARE VARIABLE

적용 대상:check marked yes Databricks Runtime 14.1 이상

상수 식을 사용할 수 있는 모든 위치에서 참조할 수 있는 세션 프라이빗 임시 변수를 만듭니다. 또한 IDENTIFIER 절과 함께 변수를 사용하여 SQL 문의 식별자를 매개 변수화할 수도 있습니다.

변수는 SET VARIABLE 문을 사용하여 수정됩니다.

임시 변수는 다음 내에서 참조할 수 없습니다.

  • 검사 제약 조건
  • 생성된 열
  • 기본 식
  • 지속형 SQL UDF의 본문
  • 지속형 보기의 본문입니다.

임시 변수를 세션 변수라고도 합니다.

구문

DECLARE [ OR REPLACE ] [ VARIABLE ] variable_name
    [ data_type ] [ { DEFEAULT | = } default_expression ]

매개 변수

  • OR REPLACE

    지정한 경우 이름이 같은 변수가 바뀝다.

  • variable_name

    변수의 이름입니다. 이름은 system.session>로 session 한정될 수 있습니다. 지정하지 않는 한 OR REPLACE 이름은 세션 내에서 고유해야 합니다.

  • data_type

    지원되는 모든 데이터 형식입니다. 생략된 경우 data_type 지정 DEFAULT해야 하며 형식은 .에서 default_expression파생됩니다.

  • 기본 default_expression 또는= default_expression

    만든 후 변수의 초기 값을 정의합니다. default_expression은 .로 data_type캐스팅할 수 있어야 합니다. 기본값을 지정하지 않으면 변수가 .로 NULL초기화됩니다.

    식에 하위 쿼리가 포함된 경우 Azure Databricks는 INVALID_DEFAULT_VALUE 발생합니다. SUBQUERY_EXPRESSION 오류입니다.

예제

-- Create a variable with a default
> DECLARE VARIABLE myvar INT DEFAULT 5;
> VALUES (myvar);
 5

-- Setting a variable
> SET VAR myvar = (SELECT sum(c1) FROM VALUES(1), (2) AS T(c1);
> VALUES (myvar);
 3

-- Variables are the outermost scope.
> SELECT myvar, t.myvar, session.myvar FROM VALUES(1) AS T(myvar);
  1  1  3

> DROP TEMPORARY VARIABLE myvar;

-- A minimalist variable declaration
> DECLARE myvar = 5;
> VALUES (myvar);
 5

-- Using a variable with an IDENTIFIER clause
> DECLARE colname STRING;
> SET VAR colname = 'c1';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
  1

> SET VAR colname = 'c2';
> SELECT IDENTIFIER(colname) FROM VALUES(1, 2) AS T(c1, c2);
  2