ВЫПОЛНЕНИЕ НЕМЕДЛЕННОГО ВЫПОЛНЕНИЯ

Область применения:check marked yes 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 .

    • var_name

      Переменная 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(?), (?)' USING 5, 6;
  11

-- A SQL string composed in a SQL variable
> DECLARE sqlStr = 'SELECT SUM(c1) FROM VALUES(?), (?)';
> 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)';
> EXECUTE IMMEDIATE sqlStr INTO sum
  USING (5 AS first, arg2 AS second);
> SELECT sum;
  11