1

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

4

1 回答 1

0

首先,确保与实参对应的参使用or关键字声明:ProcB@outputAOUTOUTPUT

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

于 2012-06-26T07:08:27.390 回答