Sql 使用多个存储过程将数据插入表中

Sql 使用多个存储过程将数据插入表中,sql,sql-server,sql-server-2008,stored-procedures,Sql,Sql Server,Sql Server 2008,Stored Procedures,我想插入来自多个存储过程的数据 Trial\u Format\u sp返回两列,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 in

我想插入来自多个存储过程的数据

Trial\u Format\u sp
返回两列,
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中选择,至少不使用。因此,如果您已设置,您可以尝试:

插入TB(公司、FieldA、FieldB)
选择“昏迷”*
来自OPENQUERY(本地'exec DB1.dbo.Trial_Format_sp;');
插入TB(公司、现场A、现场B)
选择“梳子”*
来自OPENQUERY(本地'execdb2.dbo.Trial_Format_sp;');
另一个选项是创建一个表变量,分别将每个proc调用的结果加载到中,然后将这些结果连同添加的列一起转储到实际表中

例如:

DECLARE@TempResults表
(
菲尔达·纳瓦尔(最大值),
FieldB nvarchar(最大值)
);
插入@TempResults(字段A、字段B)
EXEC DB1.dbo.Trial\u Format\u sp;
插入TB(公司、现场A、现场B)
选择“ComA”,tmp.FieldA,tmp.FieldB
来自@TempResults tmp;
从@TempResults中删除;
插入@TempResults(字段A、字段B)
EXEC DB2.dbo.Trial_Format_sp;
插入TB(公司、现场A、现场B)
选择“ComB”,tmp.FieldA,tmp.FieldB
来自@TempResults tmp;

表TB由三列组成。您在SPs中写了什么?你能给我看看吗?它必须选择两列。表TB 3列存储过程返回2列,然后我想在插入表TB之前再添加1列,以指示数据来自哪个公司。