Перейти к основному содержимому
Версия: 7.0

Создание внешних подключений (NEWCONNECTION)

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

Платформа позволяет выделить блок, внутри которого все обращения к одной и той же конечной точке переиспользуют ранее открытое подключение. Типичные случаи — серия SQL-запросов к одной внешней базе, серия операций над файлами DBF в одной директории или TCP-сессия из нескольких сообщений.

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

Блок работает в текущей сессии; ничего, кроме политики переиспользования внешних подключений, он не меняет.

Язык

Для создания внешнего подключения, переиспользуемого между несколькими обращениями к внешней системе, используется оператор NEWCONNECTION.

Примеры

syncStock (STRING sku) {
NEWCONNECTION {
// одно подключение на оба запроса
EXTERNAL SQL 'jdbc:postgresql://erp/main' EXEC 'UPDATE stock SET qty = qty - 1 WHERE sku = $1' PARAMS sku;
EXTERNAL SQL 'jdbc:postgresql://erp/main' EXEC 'INSERT INTO audit (msg) VALUES ($1)' PARAMS 'sync';
}
// подключение к erp/main закрыто
}