EXECUTE IMMEDIATE
Se aplica a: Databricks SQL 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.
-
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 elementosarg_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