EXECUTE IMMEDIATE
Область применения: Databricks SQL Databricks Runtime 14.3 и более поздних версий
Выполняет инструкцию SQL, указанную STRING
в качестве.
Оператор при необходимости передает аргументы маркерам параметров и назначает результаты переменным.
Синтаксис
EXECUTE IMMEDIATE sql_string
[ INTO var_name [, ...] ]
[ USING { arg_expr [ AS ] [alias] } [, ...] ]
Для совместимости с другими диалектами EXECUTE IMMEDIATE
SQL также поддерживается USING ( { arg_expr [ AS ] [alias] } [, ...] )
Параметры
sql_string
Литерал
STRING
или переменная, создающая хорошо сформированную инструкцию SQL.Не удается вложить
EXECUTE IMMEDIATE
операторы.INTO ( var_name [, ...] )
При необходимости возвращает результаты одного запроса строки в переменные SQL. Если запрос не возвращает строки, результатом является
NULL
.Если инструкция не является запросом, Azure Databricks вызывает
INVALID_STATEMENT_FOR_EXECUTE_INTO
ошибку.Если запрос возвращает несколько строк, Azure Databricks вызывает ошибку ROW_SUBQUERY_TOO_MANY_ROWS .
-
Переменная SQL. Переменная может не ссылаться несколько раз.
-
USING { arg_expr [ AS ] [alias] } [, ...]
При необходимости, если
sql_string
содержит маркеры параметров, значения связываются с параметрами.arg_expr
Литерал или переменная, которая привязывается к маркеру параметра. Если маркеры параметров не именуются, привязка находится по позиции. Для именованных маркеров параметров привязка — по имени.
alias
Переопределяет имя, используемое для привязки
arg_expr
к именованным маркеру параметров. Каждый именованный маркер параметра должен совпадать один раз. Не всеarg_expr
должны соответствовать.
Примеры
-- 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