Ваш «Подход 1» является недопустимым синтаксисом, и Db2 отклонит его, потому что это дизайн.
Хранимая процедура, которая хочет вернуть набор результатов с помощью синтаксиса dynamic result set
, должна объявить и открыть хотя бы один курсор.
Но хранимая процедура не обязательно должна использовать синтаксис динамического набора результатов. Хранимая процедура может свободно использовать параметр OUTPUT, который является типом данных со слабым типом курсора или со строго типизированным курсором. Однако хранимая процедура должна по-прежнему открывать курсор, просто чтобы она могла передать открытый курсор обратно в качестве параметра. Тем не менее, вызывающему абоненту все равно нужно будет использовать этот курсор.
Пользовательские функции могут возвращать таблицы, это альтернативный подход, поэтому вызывающим пользователям не нужно использовать явные курсоры для доступа к полученным данным.