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