Share via


DIRECT UITVOEREN

Van toepassing op:vinkje als ja aan Databricks SQL vinkje als ja aan Databricks Runtime 14.3 en hoger

Voert een SQL-instructie uit die is opgegeven als een STRING. De instructie geeft eventueel argumenten door aan parametermarkeringen en wijst de resultaten toe aan variabelen.

Syntaxis

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

Voor compatibiliteit met andere SQL-dialecten ondersteunt EXECUTE IMMEDIATE u ook USING ( { arg_expr [ AS ] [alias] } [, ...] )

Parameters

  • sql_string

    Een STRING letterlijke of variabele die een goed opgemaakte SQL-instructie produceert.

    U kunt geen instructies nesten EXECUTE IMMEDIATE .

  • INTO ( var_name [, ...] )

    Retourneert desgewenst de resultaten van één rijquery in SQL-variabelen. Als de query geen rijen retourneert, is NULLhet resultaat.

    Als de instructie geen query is in Azure Databricks, wordt er een fout gegenereerd INVALID_STATEMENT_FOR_EXECUTE_INTO .

    Als de query meer dan één rij retourneert, genereert Azure Databricks ROW_SUBQUERY_TOO_MANY_ROWS fout.

    • var_name

      Een SQL-variabele. Er kan niet meer dan één keer naar een variabele worden verwezen.

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

    sql_string Als u parametermarkeringen bevat, worden eventueel waarden gekoppeld aan de parameters.

    • arg_expr

      Een letterlijke waarde of variabele die is gekoppeld aan een parametermarkering. Als de parametermarkeringen geen naam hebben, is de binding op positie. Voor benoemde parametermarkeringen is binding op naam.

    • alias

      Hiermee overschrijft u de naam die wordt gebruikt om een benoemde parametermarkering te binden arg_expr aan elke benoemde parametermarkering, moet één keer worden vergeleken. Niet alle arg_expr moeten overeenkomen.

Voorbeelden

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