Правильный способ выполнения GetstudentnameInOutputVariable
DECLARE @return_value VARCHAR(200)
EXEC [dbo].[Getstudentname] 2,@return_value OUTPUT
SELECT 'Return Value' = @return_value
GO
Может быть несколько сценариев, в которых вы можете использовать OUTPUT
параметр, ваш пример, похоже, не является одним из них.
Когда ваш профи c возвращает одно значение, которое обычно указывает на флаг.
Как и в вашем примере,
SELECT @studentname = Firstname + ' ' + Lastname FROM tbl_Students
Мне может понадобиться выбрать несколько столбцов из tbl_Students
, поэтому столбец output
не идеален.
Допустим, у меня есть pro c, который выполняет операции DML, а в приложении переднего плана, например, c#
Я хочу, чтобы только флаг знал, если данный pro c успешно выполнено или произошел сбой проверки или произошла ошибка, мне нужно знать только флаг Pass/Fail
, и я буду выполнять работу на основе флага.
Когда вы делаете DML operation
только тогда, ExecuteNonQuery
- лучший выбор. , Output paramter
лучше всего работает с EXecuteNonQuery
.
Таким образом, вы должны использовать Output parameter
в этой ситуации.
Другая ситуация, когда вы выполняете одно про c и вам нужен 1 или 2 результат этого pro c для работы в вызове pro c.
Тогда это очень удобный способ.
Вы также можете возвращать набор результатов, но для отлова набора результатов вам нужно создать временную немного громоздко.
Вывод: это зависит от вашей реальной ситуации.