代码改变世界

存储过程提示临时表字段不存在的解决办法--直接修改临时表的名称,用唯一值作为名称

2012-12-12 15:09  迷路中的路人甲  阅读(999)  评论(0编辑  收藏  举报

最近遇到一个问题。在存储过程中创建了一个临时表,但是使用的时候间歇性提示某一个字段不存在,例如:

Create Proc Test
as
select code,name into #tmp from Product where id>0
select * from #tmp where code = '20120105064'

go

 基本类似这个存储过程,在数据库里面执行的时候没有问题,但是在.net中执行,就会间歇性提示Code不存在。

最后查找发现,数据库会在执行之前验证结构,由于#tmp这个临时表在多个地方都有使用,导致验证时发现#TMP存在,并且结构和当前的不同。就会提示字段不存在。

解决办法很简单,用唯一名称做临时表名称,就可以解决了。