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列,以指示数据来自哪个公司。