Sql 存储过程返回值

Sql 存储过程返回值,sql,tsql,stored-procedures,Sql,Tsql,Stored Procedures,我有这样一个存储过程: Select @totalMoney*@bonusPercent/100 如何从过程返回值并将其分配给变量? 我的意思是: SET @myVarible = EXEC MyStoredProcedure @param1, @param1; 在存储过程中,只需使用 RETURN @X @X必须是整数数据类型 返回代码通常用于状态代码。输出参数可能是更好的选择,具体取决于您正在执行的操作 将参数声明为OUTPUT CREATE PROCEDURE dbo.MySto

我有这样一个存储过程:

Select @totalMoney*@bonusPercent/100 
如何从过程返回值并将其分配给变量? 我的意思是:

SET @myVarible = EXEC MyStoredProcedure @param1, @param1;

在存储过程中,只需使用

 RETURN @X
@X
必须是整数数据类型

返回代码通常用于状态代码。输出参数可能是更好的选择,具体取决于您正在执行的操作

将参数声明为
OUTPUT

CREATE PROCEDURE dbo.MyStoredProcedure 
@param1 INT,
@myVarible DECIMAL(10,4) OUTPUT
AS 
...
并称之为

EXEC dbo.MyStoredProcedure @param1, @myVarible OUTPUT;

使用
输出
变量,返回仅适用于整数

范例

create procedure prTest @id int, @id2 decimal(20,10) output
as
select @id2 = @id + 1
go
现在就这样说吧

declare @Test decimal(20,10)


exec prTest 5,@Test output
select @Test
输出

6.00000000

为什么不使用用户定义的函数而不是存储过程?(很抱歉,手边没有SQL Server,因此我无法编写和测试示例。)更易于在其他存储过程和函数中使用。很难从客户那里打电话,所以这是一种权衡。如果其他t-sql代码和客户机都需要访问,我将创建用户定义的函数,然后为客户机创建一个存储过程包装器。