У меня хранимая процедура SprocA находится на сервере ServerA. SprocA принимает 4 параметра, выполняет динамический sql и возвращает запись с 1 столбец (1 целочисленное значение). Я хотел бы иметь возможность вызвать это из функции FnB на ServerB, чтобы я мог использовать ее в хранимой процедуре SprocB на сервере ServerB, чтобы вернуть набор записей.вызов удаленного 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, он создаст Tbl_FnB с 1 записью. Если это так, мой SprocB может иметь только 1 запись с TotalQtyShipped. Будет ли также проблема параллелизма, если несколько пользователей запускают SprocB? –
Вам не нужно передавать PartId в SprocA. Вам нужно создать «сырую» таблицу со всеми возможными комбинациями (CustomerId, PartId, DateFrom, DateTo) и соответствующим значением TotalQtyShipped для каждой комбинации. И присоединитесь к этой таблице в конце. –