Создание внешних подключений (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 закрыто
}