Ошибка с хранимой процедурой - PullRequest
1 голос
/ 18 июля 2011

Я объявил курсор для извлечения максимальных отметок из таблицы вне процедуры. Получение значения через этот курсор внутри процедуры. Но процедура, возвращающая ноль. Пожалуйста, помогите мне найти ошибку.

Я использую следующий код.

Declare Cur Cursor for select max(marks) from stu

Procedure

Alter procedure DMM(@max int output)
as
open Cur
Fetch from Cur into @max
close Cur

Код, используемый для выполнения процедуры

declare @max int
set @max = 0
exec @max = DMM @max out
select @max as MaxValue

Ответы [ 2 ]

1 голос
/ 18 июля 2011

Проблема в том, что вы выполняете процедуру неправильно, вот как вы должны это сделать:

declare @max int
set @max = 0
exec DMM @max output
select @max as MaxValue

Кроме того, я согласен с marc_s, зачем использовать курсор?

1 голос
/ 18 июля 2011

Ваша проблема в том, что вы используете ту же переменную для хранения выходного параметра, что и для получения кода возврата процедуры. Поэтому ваш код возврата (0) перезаписывает ваш вывод.

Вы должны вызвать вашу процедуру, как показано:

declare @max int
declare @returnCode int

set @max = 0
exec @returnCode = DMM @max out
select @max as MaxValue
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...