Если ваш столбец tran_value имеет десятичный тип, @p будет иметь десятичные значения после выполнения запроса ...
Create Table #test
(ID1 Int,
ID2 Decimal(8,2)
)
Insert into #test Values (1,1.1)
Insert into #test Values (2,2.2)
Insert into #test Values (3,3.3)
Declare @p Decimal(8,2), @intp int
Select @intp = Sum(ID1), @p = Sum(ID2) from #test
Select @intp as IntegerSum, @p as DecimalSum
Drop Table #test
выход
IntegerSum DecimalSum
----------- ---------------------------------------
6 6.60
Примечание: вам не нужно ничего делать, чтобы возвращать значение из хранимой процедуры через выходной параметр ... Просто назначьте значение выходному параметру внутри вашего SP, оно будет автоматически возвращено вызывающей стороне.
Это означает, что ваш SP верен даже без оператора return