存储过程中的临时表

时间:2014-10-27 17:23:23

标签: sql sql-server tsql stored-procedures temp-tables

我有一个执行各种动态sql语句的存储过程。 实际上,这个存储过程将使用各种参数从SSIS触发。 因此会有很多并行执行。

此存储过程在执行期间使用临时表。 我使用Select .. into语句手动创建表,并在最后删除它们。

在并行执行期间,由于执行2尝试创建或使用与执行1相同的临时表,因此进程最终出错。这是错误的。

我尝试使用表变量来解决这个问题。但是,这在动态SQL中不起作用。 (How to use table variable in a dynamic sql statement?

我尝试使用本地临时表解决此问题。然而,使用本地临时表的SSIS和存储过程并不是一个伟大的婚姻。到目前为止,我从未找到一个好的工作解决方案。http://consultingblogs.emc.com/jamiethomson/archive/2006/12/20/SSIS_3A00_-Using-stored-procedures-inside-an-OLE-DB-Source-component.aspx

我知道如何使用GUID的名称创建临时表。然后使用它,以便它在存储过程执行中是唯一的。但是,这确实会使我的动态SQL代码难以维护。

有没有人看到其他选项,还是我过于复杂?有更可行的解决方案吗?

1 个答案:

答案 0 :(得分:0)

您可以将临时表创建为

创建表#tmp_execute (   id int,   name varchar(50),   ....... )

然后,执行动态查询

插入#tmp_execute 从tbl_Sample

中选择....

如果您需要执行动态列,则可以使用' alter table #tmp_execute add your_column int'有条件的陈述。