DBEXECUTE

DBEXECUTE выполняет указанные SQL-инструкции для базы данных, подключенной с помощью драйвера ODBC. Он может выполнять запросы, транзакции, вызывать хранимые процедуры или функции.

Входные параметры могут быть получены через первый входной порт, а выходные параметры или набор результатов отправляются в первый выходной порт. Информация об ошибке может быть отправлена на второй выходной порт.

Порты DBEXECUTE:

Тип портаНомерОбязательныйОписаниеМетаданные
Input0нет*Входные записи для SQL запросаЛюбые
Output0нет**Результат выполнения Любые
1нетОшибки выполненияНа основе входных метаданных

* Входной порт должен быть подключен, если указан атрибут 'inParameters' или если через входной порт принимается весь SQL-запрос.

** Выходной порт должен быть подключен, если указаны выходные параметры запроса в 'outParameters' или атрибут 'outputFields'.

Атрибуты DBEXECUTE:

АтрибутОбязательныйОписаниеВозможные значения
dbConnectionдаИдентификатор соединения с БД, которое будет использоваться.
dbConnection= "postgres://${DB_USR}:${USR_PWD}@${HOST}:${PORT}/${DB_NAME}"
sqlQueryдаSQL-запрос. Содержит операторы SQL, которые следует выполнить для базы данных.

Если запрос состоит из нескольких операторов, они должны быть отделены друг от друга указанным разделителем операторов SQL. Операторы будут выполняться один за другим.

<Attr name="sqlQuery">
    <![CDATA[
        CREATE TABLE IF NOT EXISTS ${TABLE_NAME} (id INT,surname TEXT,name TEXT);
        TRUNCATE TABLE ${TABLE_NAME};
        SELECT * FROM ${TABLE_NAME};
    ]]> 
</Attr>
inParametersнетИспользуется при вызове хранимой процедуры/функции с входными параметрами. Это последовательность следующего типа: 1:=$inputField1;…​;n:=$inputFieldN. Значение каждого указанного поля ввода сопоставляется с соответствующим параметром (позиция которого в SQL-запросе равна указанному числу).inParameters="1:=$srgKey;"
outParametersнетИспользуется при вызове хранимой процедуры или функции с выходными параметрами или возвращаемым значением. Это последовательность следующего типа: 1:=$outputField1;…​;n:=$outputFieldN. Значение каждого выходного параметра (определяемого его позицией в SQL-запросе) будет записано в указанное поле.outParameters="2:=$customer_name;"
outputFieldsнетЕсли хранимая процедура или функция возвращает набор данных, ее выходные данные будут сопоставлены с заданными полями вывода. Атрибут выражается как последовательность имен выходных полей, отделенных друг от друга точкой с запятой.outputFields="1:=$square;2:=$cube"
inTransactionнетУказывает, должны ли выполняться инструкции в транзакции. Применяется в случае, если база данных поддерживает транзакции.SET (default) | ONE | ALL | NEVER_COMMIT
urlнетСодержит либо имя внешнего файла, содержащего SQL-запрос, либо строку, которая используется для чтения из входного порта.
url="port:$0.script:discrete"

или

url="port:$0.fieldname:source"
charsetнетКодировка внешнего файла, указанного в атрибуте urlcharset="UTF-8"

Пример. Очистка таблицы.

Шаг DB_EXECUTE можно использовать, например, для очистки таблицы перед заполнением её с помощью другого шага.

  1. Переместите DB_EXECUTE с палитры компонентов на рабочую область дизайнера
  2. Заполните его атрибуты:

АтрибутЗначение
dbConnectionconn0 (имя соединения)
sqlQuery

truncate table services;

Таблица services будет очищена.