Dela via


KÖR OMEDELBART

Gäller för: markerad ja Databricks SQL markerad ja Databricks Runtime 14.3 och senare

Kör en SQL-instruktion som tillhandahålls som en STRING. Instruktionen skickar eventuellt argument till parametermarkörer och tilldelar resultatet till variabler.

Syntax

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

För kompatibilitet med andra SQL-dialekter stöder EXECUTE IMMEDIATE även USING ( { arg_expr [ AS ] [alias] } [, ...] )

Parametrar

  • sql_string

    En STRING literal eller variabel som producerar en välformulerad SQL-instruktion.

    Du kan inte kapsla EXECUTE IMMEDIATE instruktioner.

  • INTO ( var_name [, ...] )

    Du kan också returnera resultatet av en enskild radfråga i SQL-variabler. Om frågan inte returnerar några rader är NULLresultatet .

    Om instruktionen inte är en fråga genererar INVALID_STATEMENT_FOR_EXECUTE_INTO Azure Databricks ett fel.

    Om frågan returnerar mer än en rad genererar Azure Databricks ROW_SUBQUERY_TOO_MANY_ROWS fel.

    • var_name

      En SQL-variabel. Det går inte att referera till en variabel mer än en gång.

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

    sql_string Om innehåller parametermarkörer kan du också binda in värden till parametrarna.

    • arg_expr

      En literal eller variabel som binder till en parametermarkör. Om parametermarkörerna inte är namngivna är bindningen efter position. För namngivna parametermarkörer är bindningen efter namn.

    • alias

      Åsidosätter namnet som används för att binda arg_expr till en namngiven parametermarkör. Varje namngiven parametermarkör måste matchas en gång. arg_expr Alla måste inte matchas.

Exempel

-- 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