为什么T-SQL EXEC不返回小数?

And*_*ill 4 t-sql sql-server

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

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

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

print @amnt
return @amnt
Run Code Online (Sandbox Code Playgroud)

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

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

declare @x numeric(25,2)
exec @x=SP_GetAmount()
print @x
Run Code Online (Sandbox Code Playgroud)

它返回22222.00

谁知道为什么?

谢谢

Ed *_*per 8

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

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

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

GO
Run Code Online (Sandbox Code Playgroud)

并称之为:

declare @x numeric(25,2)
exec SP_GetAmount() @amnt = @x OUTPUT
print @x
Run Code Online (Sandbox Code Playgroud)