Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Применяется к:
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