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


EXECUTE IMMEDIATE

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 STRING-ként. Az utasítás opcionálisan átadja az argumentumokat a paraméterjelölőknek, és az eredményeket változókhoz rendeli.

Szintaxis

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

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

Paraméterek

  • sql_string

    Állandó STRINGkifejezés, amely egy jól formázott SQL-utasítást hoz létre.

    Ha a sql_string paraméterjelölőket tartalmaz, akkor azoknak vagy mind pozicionális (?), vagy mind elnevezett (:parm1) paramétereknek kell lennie.

    A Databricks Runtime 17.3 sql_string előtt a sql_string literálnak vagy változónak kell lennie. És nem ágyazhat be EXECUTE IMMEDIATE utasításokat.

  • 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] } [, ...]

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

    • arg_expr

      Egy paraméterjelölőhöz kötődő állandó kifejezés. 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.

    A Databricks Runtime 17.3 arg_expr előtt literálnak vagy változónak kell lennie.

    • alias

      Felülírja azt a nevet, amelyet a arg_expr-hez való kötés során egy megnevezett paraméterjelölőhöz használnak. Minden elnevezett paraméterjelölőnek egyszer egyeznie kell. Nem minden arg_expr-nek 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;
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(:first), (:second) AS t(c1)';
> EXECUTE IMMEDIATE sqlStr INTO sum USING arg1, arg2;
> SELECT sum;
  11

-- Using named parameter markers
> DECLARE sum INT;
> DECLARE 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

-- Using constant expressions
> DECLARE func STRING DEFAULT 'sum';
> EXECUTE IMMEDIATE 'SELECT ' || func || '(c1) FROM VALUES(:first), (:second) AS t(c1)'
  USING 5 + 7 AS first, length('hello') AS second;
 19