ALTER PROCEDURE dbo.StoredProcedure8
@emp_code bigint,
@co_id bigint,
@p decimal(8,2) output
AS
SELECT @p = (select sum(tran_value) from emp_ded_ben_trans where [email protected]_code and [email protected]_id and period_flg=2 and tax_flg=0)
RETURN
回答
存储过程不会作出“返回值” - 这是您存储功能。
CREATE FUNCTION dbo.CalculateSomething
(@emp_code bigint, @co_id bigint)
RETURNS DECIMAL(8, 2)
AS BEGIN
RETURN
(SELECT SUM(tran_value)
FROM dbo.emp_ded_ben_trans
WHERE
emp_code = @emp_code AND co_id = @co_id
AND period_flg = 2 AND tax_flg = 0)
END
然后,您可以调用这个存储功能是这样的:
SELECT dbo.CalculateSomething(value_for_emp_code, value_for_co_id)
,并取回从计算一个DECIMAL(8,2)。
存储过程将返回受其操作影响的行数 - INT。
如果您需要从存储过程中返回一个值,则需要使用OUTPUT参数类型并使用AdaTheDev显示的技术 - 您需要将输出值转换为变量。
要调用存储过程并检索输出参数,你这样做(例如):
DECLARE @p DECIMAL(8,2)
EXECUTE dbo.StoredProcedure8 123, 456, @p OUTPUT
-- @p now contains the output value
更新:
使用RETURN
你不需要 - 你是对的,RETURN
只能返回一个INTEGER。但是返回值与您实际使用的OUTPUT参数不同。
即得到一个存储过程返回值是不同的语法:
DECLARE @Result INTEGER
EXECUTE @Result = SomeSproc
首先,你可以通过一个功能,如果你要返回一个值基础上投入使用的不是一个存储过程参数
如果SP返回小数时,你需要整 - 只投:SELECT (CAST @d AS INT)
但是这是非常危险的(可能的类型溢出)
我需要返回十进制来自sp。的值可能是 – shmandor 2010-08-05 07:34:58
@shmandor:你当前的sp有一个十进制输出参数。这不够吗? @ AdaTheDev的答案是关于如何正确使用它。 param被声明为十进制,变量被声明为十进制。无处 – abatishchev 2010-08-05 08:12:12
如果列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语句
- 1. SQL Server存储过程参数输出
- 2. ADO.Net和存储过程输出参数
- 3. 存储过程的输出参数
- 4. MySQL的存储过程:输出参数
- 5. 使用输入和输出参数执行SQL存储过程
- 6. 用EF 4.0调用存储过程并使用输出参数
- 7. 使用输出参数调用Oracle存储过程
- 8. 在VBScript中使用输出参数调用SQL存储过程
- 9. MySQL:如何仅使用输出参数调用存储过程?
- 10. 使用EF Core获取存储过程的输出参数值?
- 11. 存储存储过程的结果而不使用输出参数
- 12. 返回存储过程的输出参数另一个存储过程
- 13. 使用输入和输出参数从PHP调用Oracle存储过程
- 14. 将存储过程输出参数转储到DataGridView行中
- 15. 调用另一个存储过程中包含参数和输出参数的存储过程?
- 16. 确定存储过程中的输入和输出参数
- 17. 存储过程同时具有输入和输出参数
- 18. 调用存储过程的输出参数
- 19. 如何调用存储过程EF6与输出参数
- 20. 调用存储过程与输出参数
- 21. 调用存储过程忽略输出参数
- 22. Grails调用带输出参数的存储过程
- 23. 存储过程的输出参数通过iBATIS的
- 24. Oracle存储过程的输入参数
- 25. mysql存储过程输入参数值
- 26. 无法使用输入和输出参数执行存储过程
- 27. 使用输入输出参数执行多个存储过程的SQL任务
- 28. 输出参数与表值函数的存储过程?
- 29. 使用参数的存储过程
- 30. 使用存储过程的输入参数调用SSIS包
什么是你的问题? – 2010-08-05 07:19:25