2012-06-25 22 views
1

我在服務器A上有一個存儲過程。服務器B是一個鏈接服務器,連接正常,權限都很好。服務器A上的proc的最後一行使用EXEC調用服務器B上的proc。我希望如果可能的話,能夠從服務器A上的proc返回一個值,該值是在服務器B上調用的proc中的返回值。 這可能嗎?代碼看起來是這樣的:來自跨服務器sprocs的返回值

proc foo(outputFromB INT OUTPUT) 
... 
EXEC [someserver].[db].[dbo].[ProcB] 
@inputA 
@inputB 
@outputA 

我想輸出A的值從proc foo返回outputFromB。任何幫助表示讚賞。

回答

0

首先,確保對應的實際參數@outputAProcB正式參數都被定義爲要麼OUTOUTPUT關鍵字:

CREATE PROCEDURE dbo.ProcB (
    other parameters, 
    @outputParam typeOUTPUT 
) 
AS 
… 

當調用的程序,同樣的關鍵字也必須經過加實際爲參數,以便將新值實際分配給它:

proc foo(@outputFromB INT OUTPUT) 
... 
EXEC [someserver].[db].[dbo].[ProcB] 
@inputA 
@inputB 
@outputFromB OUTPUT 

您還可以看到foo的形式參數直接用於調用ProcB的命令中,如果您不需要在將其分配給@outputFromB之前以任何方式處理返回的值,那麼這應該是完美的。

就是這樣。當致電foo時,請不要忘記提供OUTPUT