使用SQL中的存储过程多次插入表

时间:2015-02-25 08:50:56

标签: sql sql-server-2008 stored-procedures insert bulkinsert

我有一个场景,我试图将具有不同参数值的存储过程中的多个插入同时放入临时表中以支持所有结果。

我的临时表定义为 -

create table #temptab (transaction_id varchar(20), contract_no varchar(20))

我在这里执行的SP只返回两列,其定义与临时表相同。

当我单独插入此#temptab时,代码执行成功,例如:

INSERT INTO #temptab (transaction_id,contract_no)
EXEC USP_FEED_MGMT_GETFEEDTRANSACTIONLISTBYFEEDID 169049

当我尝试使用存储过程进行MULTIPLE INSERTS时,它给了我一个错误,尝试了很多方法,例如:

1)不使用VALUES关键字,就像上面的单个插入一样:

INSERT INTO #temptab (transaction_id,contract_no)
EXEC USP_FEED_MGMT_GETFEEDTRANSACTIONLISTBYFEEDID 169049,
EXEC USP_FEED_MGMT_GETFEEDTRANSACTIONLISTBYFEEDID 169076,
EXEC USP_FEED_MGMT_GETFEEDTRANSACTIONLISTBYFEEDID 169090

错误文字:

Msg 156, Level 15, State 1, Line 3
Incorrect syntax near the keyword 'EXEC'.
Msg 156, Level 15, State 1, Line 4
Incorrect syntax near the keyword 'EXEC'.

2)使用SELECT INTO语句:

select * into #temptab from EXEC USP_FEED_MGMT_GETFEEDTRANSACTIONLISTBYFEEDID 169049

错误文字:

Msg 156, Level 15, State 1, Line 1
Incorrect syntax near the keyword 'EXEC'.

我知道使用OPENQUERY语句,但我正在寻找一种方法将MULTIPLE INSERT转换为表,使用具有不同参数的过程返回根据表结构定义的结果,或者如果我可以手动选择结果集中的列插入表格。

1 个答案:

答案 0 :(得分:0)

应该只是

INSERT INTO #temptab (transaction_id,contract_no)
EXEC USP_FEED_MGMT_GETFEEDTRANSACTIONLISTBYFEEDID 169049

INSERT INTO #temptab (transaction_id,contract_no)
EXEC USP_FEED_MGMT_GETFEEDTRANSACTIONLISTBYFEEDID 169076

INSERT INTO #temptab (transaction_id,contract_no)
EXEC USP_FEED_MGMT_GETFEEDTRANSACTIONLISTBYFEEDID 169090

无法将多个执行程序的结果联合起来,只能将一个结果集顺序插入一个。