Compartir a través de


EXECUTE IMMEDIATE

Se aplica a: casilla marcada como síDatabricks SQL casilla marcada como Sí Databricks Runtime 14.3 y versiones posteriores

Ejecuta una instrucción SQL proporcionada como STRING. La instrucción pasa opcionalmente argumentos a marcadores de parámetros y asigna los resultados a variables.

Sintaxis

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

Para la compatibilidad con otros dialectos SQL, EXECUTE IMMEDIATE también admite USING ( { arg_expr [ AS ] [alias] } [, ...] )

Parámetros

  • sql_string

    Un literal STRING o una variable, lo que genera una instrucción SQL bien formada.

    No se pueden anidar instrucciones EXECUTE IMMEDIATE.

  • INTO ( var_name [, ...] )

    Opcionalmente, devuelve los resultados de una sola consulta de fila en variables SQL. Si la consulta no devuelve ninguna fila, el resultado es NULL.

    Si la instrucción no es una consulta, Azure Databricks genera un error INVALID_STATEMENT_FOR_EXECUTE_INTO.

    Si la consulta devuelve más de una fila, Azure Databricks devuelve un error ROW_SUBQUERY_TOO_MANY_ROWS.

    • var_name

      Una variable SQL. Es posible que no se haga referencia a una variable más de una vez.

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

    Opcionalmente, si sql_string contiene marcadores de parámetros, enlaza los valores a los parámetros.

    • arg_expr

      Un literal o una variable que se enlaza a un marcador de parámetro. Si los marcadores de parámetros no tienen nombre, el enlace es por posición. En el caso de marcadores de parámetros con nombre, el enlace es por nombre.

    • alias

      Invalida el nombre usado para enlazar arg_expr a un marcador de parámetro con nombre. Cada marcador de parámetro con nombre debe coincidir una vez. No todos los elementos arg_expr deben coincidir.

Ejemplos

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