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 returns an integer. Use an output parameter.

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

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

GO

And to call it:

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