我有一个存储过程SP1,它执行并在一个表上进行选择。现在我需要将该数据插入另一个表中。我不想复制代码,所以我想把SP1返回的数据插入到临时表中,这样我就可以对它进行一些处理并保存。
我尝试了INSERT INTO #tmp; exec dbo.Sp1;
,但它给我一个错误Invalid object name '#tmp'.
。我有没有办法动态创建这个表?这个问题有更好的解决方案吗?
答案 0 :(得分:1)
临时表必须存在才能使用insert into exec。
这不是首次出现的退缩,因为对程序结果集的任何更改都可能会使代码失效。
答案 1 :(得分:0)
首先运行:
create proc MySelect
as
begin
select 1 as myColumn1, 2 as mycolumn2
end
然后这个:
create table #tmp(
col_1 int,
col_2 int)
insert into #tmp exec MySelect
select * from #tmp