我已经声明了一个游标,用于从过程中的表外侧获取最大标记。 通过该过程中的游标获取值。 但程序归零。 请帮我找错。
我正在使用以下代码。
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
答案 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,为什么要使用游标?