다음을 통해 공유


EXECUTE IMMEDIATE

적용 대상: 예로 표시된 확인 Databricks SQL 예로 표시된 확인 Databricks Runtime 14.3 이상

로 제공된 STRINGSQL 문을 실행합니다. 이 문은 필요에 따라 매개 변수 표식에 인수를 전달하고 결과를 변수에 할당합니다.

구문

EXECUTE IMMEDIATE sql_string
        [ INTO var_name [, ...] ]
        [ USING { arg_expr [ AS ] [alias] } [, ...] ]

다른 SQL 언어 EXECUTE IMMEDIATE 와의 호환성을 위해 지원합니다. USING ( { arg_expr [ AS ] [alias] } [, ...] )

매개 변수

  • sql_string

    올바른 형식의 STRING SQL 문을 생성하는 리터럴 또는 변수입니다.

    문을 중첩 EXECUTE IMMEDIATE 할 수 없습니다.

  • INTO ( var_name [, ...] )

    필요에 따라 단일 행 쿼리의 결과를 SQL 변수로 반환합니다. 쿼리가 행을 반환하지 않으면 결과는 .입니다 NULL.

    문이 쿼리아니면 Azure Databricks에서 오류가 발생합니다INVALID_STATEMENT_FOR_EXECUTE_INTO.

    쿼리가 둘 이상의 행을 반환하면 Azure Databricks에서 ROW_SUBQUERY_TOO_MANY_ROWS 오류가 발생합니다.

    • var_name

      SQL 변수입니다. 변수를 두 번 이상 참조할 수 없습니다.

  • USING { arg_expr [ AS ] [alias] } [, ...]

    필요에 따라 매개 변수 표식이 포함된 경우 sql_string 매개 변수에 값을 바인딩합니다.

    • arg_expr

      매개 변수 표식에 바인딩되는 리터럴 또는 변수입니다. 매개 변수 표식이 명명되지 않은 경우 바인딩은 위치별입니다. 명명된 매개 변수 표식의 경우 바인딩은 이름으로 지정됩니다.

    • alias

      명명된 매개 변수 표식에 바인딩 arg_expr 하는 데 사용되는 이름을 재정의합니다. 명명된 각 매개 변수 표식은 한 번 일치해야 합니다. 모든 arg_expr 항목이 일치해야 하는 것은 아닙니다.

예제

-- A self-contained execution using a literal string
> EXECUTE IMMEDIATE 'SELECT SUM(c1) FROM VALUES(?), (?) AS t(c1)' USING 5, 6;
  11

-- A SQL string composed in a SQL variable
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(?), (?) AS t(c1)';
> DECLARE arg1 = 5;
> DECLARE arg2 = 6;
> EXECUTE IMMEDIATE sqlStr USING arg1, arg2;
  11

-- Using the INTO clause
> DECLARE sum INT;
> EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
> SELECT sum;
  11

-- Using named parameter markers
> SET VAR sqlStr = 'SELECT SUM(c1) FROM VALUES(:first), (:second) AS t(c1)';
> EXECUTE IMMEDIATE sqlStr INTO sum
  USING (5 AS first, arg2 AS second);
> SELECT sum;
  11