从跨服务器sprocs返回值

时间:2012-06-25 22:58:36

标签: sql tsql stored-procedures

我在服务器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返回。任何帮助表示赞赏。

1 个答案:

答案 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