Это описано в документации .
. Ключевыми деталями, которые необходимо узнать, являются локаторы, associate result set locators
, а затем allocate ... cursor for result set
.После того, как это сделано, ваша вызывающая процедура может обрабатывать курсор так же, как и любой другой (выборка строк, закрытие и т. Д.).
Так что, если ваши вложенные процедуры возвращают 1 набор результатов, вызывающий sproc объявит локатор , связывает локатор набора результатов с вашей вызываемой процедурой, затем выделяет курсор для использования набора результатов.Изучите документацию для каждого из задействованных операторов.
Помимо вышесказанного, если вы всегда будете фильтровать набор результатов, почему бы не создать процедуру, которая выполняет фильтрацию в источнике (чтобы избежать медленной двойной фильтрации)?Вы также можете создать процедуру для создания сеансовой таблицы и предоставить вызывающим абонентам доступ к этой сеансовой таблице.Или использовать табличную функцию, чтобы вернуть именно то, что нужно?