Передача выборок из исполняемого на сервере процедурного кода… — СУБД Сокол (SoQoL) — TG.ME

Передача выборок из исполняемого на сервере процедурного кода клиентскому приложению

Некоторые из вас знают, насколько элегантно выглядит в MS SQL Server синтаксис передачи клиенту табличных данных из процедуры - используется оператор SELECT без указания переменных для сохранения результата. Нужно извлечь несколько результатов табличного вида (то есть выборок, состоящих из строк и столбцов) из одной процедуры - пожалуйста! Для этого напишите нужные SELECT в нужных местах хранимой процедуры. Результаты в виде отдельных resultSet уходят в клиентское приложение.

Теперь так можно делать и в Соколе.

Можно использовать такую возможность не только по прямому назначению (передача пользовательских данных), но и для передачи, например, отладочной информации и т.д.
Только не забывайте об одном важном моменте - сервер гарантирует завершение исполнения процедуры только в том случае, если извлечены (точнее проитерированы) все ее результаты (вспоминаем про метод moreResultSet).

А если вам не терпится попробовать, быстренько настраиваем DBeaver. Для этого идем в настройки драйвера для доступа к Соколу (Driver Settings) открываем вкладку Advanced Parameters и ставим галку в параметре Driver supports multiple results. Это всё. Успехов!

Пример процедурного кода в виде анонимного блока:
BEGIN
SELECT 1,'первая выборка';
SELECT 'другая выборка', CURRENT_TIMESTAMP;
END;


Если можете рассказать о ваших примерах применения таких возможностей в используемой вами СУБД, будем рады послушать.
🔥14
November 20, 2025 1.3K 39 4