繁体   English   中英

存储过程中的临时表

[英]Temporary table in stored procedure

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

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

在并行执行期间,由于执行2试图创建或使用与执行1相同的临时表,因此该过程最终会出错。

我试图使用表变量来解决这个问题。 但是,这在动态SQL中不起作用。 如何在动态SQL语句中使用表变量?

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

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

有人看到其他选项吗?还是我把事情复杂化了? 有没有更可行的解决方案?

您可以将临时表创建为

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

然后,执行动态查询

从tbl_Sample插入#tmp_execute select ....

如果需要执行动态列,则可以在条件语句中使用'alter table #tmp_execute add your_column int'。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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