我有一個存儲過程SprocA駐留在ServerA上。 SprocA需要4個參數,執行動態sql並返回1列(1個整數值)的記錄。 我希望能夠從ServerB上的函數FnB調用此函數,以便我可以在服務器ServerB上的存儲過程SprocB中使用它來返回記錄集。從函數調用遠程sproc
例如,我想有這樣的事情
Create Function FnB
@CustomerId int
,@PartId varchar(30)
,@DateFrom datetime
,@DateTo datetime
Returns int
As
Begin
Declare @Ret int
Exec @Ret = LnkSrv.DB_History.dbo.SprocA(@CustomerId, @PartId, @DateFrom, @DateTo)
Return @Ret
End --FnB
Create Procedure SprocB
@RowId int
As
Begin
Select Partid, FnB(Customerid, Partid, DateFrom, DateTo) As TotalQtyShipped
, AskedPrice, AskedQty, AppvPrice, AppvQty
From Tbl_Header a
Inner Join Tbl_Detail b On a.RowID = b.RowID
Where a.RowID = @RowId
End --SprocB
可能的結果:
PartID TotalQtyShipped AskedPrice AskedQty AppvPrice AppQty
pn1 1000 10 100 10 100
pn2 550 20 50 15 50
pn3 2000 5 2000 5 1500
請幫
TL
如果我將PartId傳遞給SprocA,它是否會創建帶有1條記錄的Tbl_FnB。如果是這樣,我的SprocB可能只有1條TotalQtyShipped記錄。如果多個用戶運行SprocB,它是否也會有併發問題? –
您不需要將PartId傳遞給SprocA。您需要爲每個組合生成包含(CustomerId,PartId,DateFrom,DateTo)和相應TotalQtyShipped值的所有可能組合的「原始」表。最後加入這張表。 –