Megosztás a következőn keresztül:


AZONNALI VÉGREHAJTÁS

A következőkre vonatkozik: jelölje be az igennel jelölt jelölőnégyzetet Databricks SQL jelölje be az igennel jelölt jelölőnégyzetet Databricks Runtime 14.3 vagy újabb

Végrehajt egy SQL-utasítást, amely egy STRING. Az utasítás opcionálisan átadja az argumentumokat a paraméterjelölőknek, és az eredményeket változókhoz rendeli.

Syntax

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

Más SQL-dialektusokkal EXECUTE IMMEDIATE való kompatibilitás érdekében a USING ( { arg_expr [ AS ] [alias] } [, ...] )

Paraméterek

  • sql_string

    Egy STRING konstans vagy változó, amely egy jól formázott SQL-utasítást hoz létre.

    Utasítások nem ágyazhatók be EXECUTE IMMEDIATE .

  • INTO ( var_name [, ...] )

    Opcionálisan egy soros lekérdezés eredményeit adja vissza SQL-változókba. Ha a lekérdezés nem ad vissza sorokat, az eredmény .NULL

    Ha az utasítás nem lekérdezés, az Azure Databricks hibát jelez INVALID_STATEMENT_FOR_EXECUTE_INTO .

    Ha a lekérdezés egynél több sort ad vissza, az Azure Databricks ROW_SUBQUERY_TOO_MANY_ROWS hibát jelez.

    • var_name

      EGY SQL-változó. Egy változóra csak egyszer lehet hivatkozni.

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

    sql_string Ha paraméterjelölőket tartalmaz, akkor az értékek a paraméterekhez kötődnek.

    • arg_expr

      Egy paraméterjelölőhöz kötődő literál vagy változó. Ha a paraméterjelölők névtelenek, a kötés pozíció szerint történik. Az elnevezett paraméterjelölők esetében a kötés név szerint történik.

    • alias

      Felülbírálja a névvel ellátott paraméterjelölőhöz való kötéshez arg_expr használt nevet. Minden elnevezett paraméterjelölőnek egyszer kell egyeznie. Nem mindennek arg_expr kell egyeznie.

Példák

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