Курсор в качестве вывода предназначен для инкапсуляции определения курсора.Это означает, что вы выполняете SP, чтобы получить курсор, который уже был инициализирован и связан с результирующим набором, который неизвестен вызывающей стороне, но вызывающая сторона будет использовать.
Это открывает потенциальную проблему, состоящую в том, что вызывающей стороне необходимо знать, в какие переменные необходимо преобразовать строку выборки, и, возможно, она может нарушить использование курсора, если выполняется неправильно.Этого не произойдет, если SP вернет набор результатов с SELECT
или вставит во временную таблицу, созданную, например, вне.
По моему мнению, полезных приложений этого практически нет.Начнем с того, что в очень редких случаях вы хотите использовать курсор на всех , и обычно это операции, которые не связаны с DML и включают системные операции, такие как создание файлов или отправка электронных писем.И даже в этих случаях сокрытие набора результатов от вызывающей стороны кажется довольно неясным.