阅读所有答案后简化它。使用了两个输入和两个输出参数。
确保为存储过程中的输出参数分配一些值。
我的存储过程:
CREATE PROCEDURE [dbo].[MyStoredProcedure]
(@InParam1 VARCHAR(20) = NULL,
@InParam2 VARCHAR(20) = '',
@OutParam1 VARCHAR(20) = NULL OUT,
@OutParam2 VARCHAR(20) = NULL OUT)
AS
BEGIN
SET @OutParam1 = 'Whatever you want to return'
SET @OutParam2 = 'Whatever you want to return'
RETURN 0; --This is final value any SP returns by default 0
END
调用这个存储过程 - 我使用了两个输出参数,所以我们需要在执行存储过程之前声明它们:
DECLARE @OutParam1 VARCHAR(20)
DECLARE @OutParam2 VARCHAR(20)
即使您最终不需要存储过程中的任何变量(例如@Var),也可以使用任何变量,但这将设置您的输出参数,而不会像返回的那样返回任何返回数据:
方法一:
DECLARE @Var INT
EXEC @Var = MyStoredProcedure 'InParam1', 'InParam2', @OutParam1 OUT, @OutParam2 OUT
如果您想从存储过程中返回一些 select 语句,并希望使用这些值,您可以将它们保存在临时表中或仅用作选择查询。
方法二:
插入临时表
@DECLARE @TableTemp TABLE
(
Column1 VARCHAR(20),
Column2 VARCHAR(20)
)
INSERT INTO @TableTemp
EXEC MyStoredProcedure 'InParam1', 'InParam2', @returnParam1 OUT, @returnParam2 OUT
这将设置来自MyStoredProcedure 的两个输出参数,并插入您从MyStoredProcedure 传递的值作为选择语句。
方法三:
要简单地将返回的值用作表格数据,我们可以这样使用:
EXEC MyStoredProcedure 'InParam1', 'Inparam2', @returnParam1 OUT, @returnParam2 OUT
在上述所有情况下始终设置输出参数。