您不能從EXEC中選擇,至少不能使用OPENQUERY。所以,如果你有設置,你可以嘗試:
INSERT INTO TB (Company, FieldA, FieldB)
SELECT "ComA", *
FROM OPENQUERY(Local, 'exec DB1.dbo.Trial_Format_sp;');
INSERT INTO TB (Company, FieldA, FieldB)
SELECT "ComB", *
FROM OPENQUERY(Local, 'exec DB2.dbo.Trial_Format_sp;');
另一種選擇是創建一個表變量,每個進程內調用的結果加載到獨立,然後傾倒這些結果與添加的列到一起真正的桌子。
例如:
DECLARE @TempResults TABLE
(
FieldA nvarchar(max),
FieldB nvarchar(max)
);
INSERT INTO @TempResults (FieldA, FieldB)
EXEC DB1.dbo.Trial_Format_sp;
INSERT INTO TB (Company, FieldA, FieldB)
SELECT "ComA", tmp.FieldA, tmp.FieldB
FROM @TempResults tmp;
DELETE FROM @TempResults;
INSERT INTO @TempResults (FieldA, FieldB)
EXEC DB2.dbo.Trial_Format_sp;
INSERT INTO TB (Company, FieldA, FieldB)
SELECT "ComB", tmp.FieldA, tmp.FieldB
FROM @TempResults tmp;
你的表TB由三列的。你在SP中寫了什麼?你能證明嗎?它必須選擇兩列。 – 2015-02-11 02:32:48
表TB 3列 存儲過程返回2列 然後我想在插入表TB 之前再添加1列,以表示數據來自哪個公司。 – njtd 2015-02-11 02:36:59