最近遇到一个问题。在存储过程中创建了一个临时表,但是使用的时候间歇性提示某一个字段不存在,例如:
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存在,并且结构和当前的不同。就会提示字段不存在。
解决办法很简单,用唯一名称做临时表名称,就可以解决了。