使用多个存储过程将数据插入 table
Insert data into table using multiple stored procedures
我想从多个存储过程中插入数据。
Trial_Format_sp
returns 2 列,FieldA
和 FieldB
,但我想添加另一列以表明公司数据来自。
这是我的代码,它不起作用
create table TB
(
Company nvarchar(max) ,
FieldA nvarchar(max),
FieldB nvarchar(max)
)
insert into TB
"ComA" , exec DB1.dbo.Trial_Format_sp
insert into TB
"ComB" , exec DB2.dbo.Trial_Format_sp
谢谢。
您不能从 EXEC select,至少在不使用 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;');
另一种选择是创建一个 table 变量来单独加载每个 proc 调用的结果,然后将这些结果与添加的列一起转储到真正的 table.
例如:
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;
我想从多个存储过程中插入数据。
Trial_Format_sp
returns 2 列,FieldA
和 FieldB
,但我想添加另一列以表明公司数据来自。
这是我的代码,它不起作用
create table TB
(
Company nvarchar(max) ,
FieldA nvarchar(max),
FieldB nvarchar(max)
)
insert into TB
"ComA" , exec DB1.dbo.Trial_Format_sp
insert into TB
"ComB" , exec DB2.dbo.Trial_Format_sp
谢谢。
您不能从 EXEC select,至少在不使用 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;');
另一种选择是创建一个 table 变量来单独加载每个 proc 调用的结果,然后将这些结果与添加的列一起转储到真正的 table.
例如:
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;