我在服务器A上有一个存储过程。服务器B是链接服务器,连接正常,权限都很好。服务器A上的proc的最后一行使用EXEC来调用服务器B上的proc。我希望能够从服务器A上的proc返回一个值,这是在服务器B上调用的proc中的返回值。 。 这可能吗?代码看起来像:
proc foo(outputFromB INT OUTPUT)
...
EXEC [someserver].[db].[dbo].[ProcB]
@inputA
@inputB
@outputA
我希望输出A的值从outputFromB中的proc foo返回。任何帮助表示赞赏。
答案 0 :(得分:0)
首先,确保使用ProcB
或@outputA
关键字声明与实际参数OUT
对应的OUTPUT
正式参数:
CREATE PROCEDURE dbo.ProcB (
other parameters,
@outputParam type OUTPUT
)
AS
…
调用该过程时,还必须在实际参数之后添加相同的关键字,以便实际为其分配新值:
proc foo(@outputFromB INT OUTPUT)
...
EXEC [someserver].[db].[dbo].[ProcB]
@inputA
@inputB
@outputFromB OUTPUT
您还可以看到foo
的形式参数直接在调用ProcB
的命令中使用,如果您不需要以任何方式处理返回的值,这应该是完全正确的将其分配给@outputFromB
。
就是这样。在调用OUTPUT
时也不要忘记提供foo
。