将 SP 的返回数据插入临时表

问题描述 投票:0回答:3

我有一个存储过程 SP1,它在一个表上执行并进行选择。现在我需要将该数据插入到另一个表中。我不想重复代码,所以我想将 SP1 返回的数据插入到临时表中,这样我就可以对其进行一些处理并保存它。

我尝试了

INSERT INTO #tmp; exec dbo.Sp1;
,但它给了我一个错误,说
Invalid object name '#tmp'.
。有没有办法可以动态创建这个表?这个问题有更好的解决办法吗?

sql-server sql-server-2005 stored-procedures
3个回答
1
投票

在使用 insert into exec 之前,临时表必须存在。

这并不是一个缺点,因为它乍一看似乎是对过程结果集的任何更改都可能会破坏您的代码。


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

0
投票

如果您可以控制 dbo.sp1,那么最简单的方法是使用临时表。在父过程中声明临时表并在子过程中使用它(不声明它)。

该表将通过两者维持范围,并且您不必担心多个用户运行它,因为临时表是本地的。

© www.soinside.com 2019 - 2024. All rights reserved.