4

我有一个简单的查询,我已经变成了一个存储过程:

create procedure GetAmount as
declare @amnt decimal(25,2)

select @amnt=66666.67 
set @amnt = @amnt/3.00

print @amnt
return @amnt

如果我打印@amnt,它会返回 22222.22

但是如果我使用 EXEC 并将其分配给一个变量:

declare @x numeric(25,2)
exec @x=SP_GetAmount()
print @x

它返回 22222.00

有谁知道为什么?

谢谢

4

1 回答 1

8

return 返回一个整数。使用输出参数。

create procedure GetAmount 
    @amnt decimal(25,2) OUTPUT
as

select @amnt=66666.67 
set @amnt = @amnt/3.00

GO

并称之为:

declare @x numeric(25,2)
exec SP_GetAmount() @amnt = @x OUTPUT
print @x
于 2012-11-01T09:12:08.577 回答