存储过程出错

时间:2011-07-18 11:38:53

标签: sql sql-server-2008 stored-procedures

我已经声明了一个游标,用于从过程中的表外侧获取最大标记。 通过该过程中的游标获取值。 但程序归零。 请帮我找错。

我正在使用以下代码。

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 个答案:

答案 0 :(得分:1)

问题在于您使用相同的变量来存储输出参数,因为您正在使用它来获取过程的返回码。因此,您的返回代码(0)会覆盖您的输出。

您应该按照所示调用您的程序:

declare @max int
declare @returnCode int

set @max = 0
exec @returnCode = DMM @max out
select @max as MaxValue

答案 1 :(得分:1)

问题是你正在执行错误的程序,这是你应该怎么做的:

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

除此之外,我同意marc_s,为什么要使用游标?