【发布时间】:2019-03-15 11:20:04
【问题描述】:
给定一个简单的存储过程,它填充一个OUTPUT 参数和一个RETURNs 值,例如:
CREATE PROCEDURE sp_test
(
@param_out INT OUTPUT
)
AS BEGIN
SELECT @param_out = 9
RETURN 2
END
如何使用sp_executesql 调用此过程并捕获这两个值?
我试过了:
DECLARE @ret INT, @param_out INT
EXEC SP_EXECUTESQL N'EXEC @ret = sp_test',
N'@ret INT OUTPUT, @param_out INT OUTPUT',
@ret OUTPUT,
@param_out OUTPUT
SELECT @ret, @param_out
但是这抱怨@param_out 没有提供:
过程或函数“sp_test”需要参数“@param_out”,但未提供。
【问题讨论】:
-
你为什么还要在
sp_executesql中封装电话? -
我实际上是动态地将存储过程名称构建为字符串,这只是一个示例,用于演示我在使用 OUTPUT 和 RETURN 值时遇到的问题。
-
所以你不需要
sp_executesql。
标签: sql sql-server sp-executesql