繁体   English   中英

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

[英]Insert data into table using multiple stored procedures

我想从多个存储过程中插入数据。

Trial_Format_sp返回2列, FieldAFieldB ,但我想添加另一列以指示公司数据来自。

这是我的代码,它不起作用

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM