[英]Insert data into table using multiple stored procedures
我想从多个存储过程中插入数据。
Trial_Format_sp
返回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中进行选择,至少不能不使用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;');
另一种选择是创建一个表变量以将每个proc调用的结果分别加载到其中,然后将这些结果与添加的列一起转储到真实表中。
例如:
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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.