都知道Sql Server数据库中表等对象都保存在sysobjects数据表中,而临时表呢?它被保存于tempdb这个数据库中,今天写了个存储过程,动态拼Sql语句,使用到了全局性的临时表,格式为“##TempTableName”。
- 动态的Sql语句:Select FieldsList into 【普通临时表】 from 。。。。
- Execute(Sql语句),这时普通的临时表在Execute中执行,执行后,临时表就被清除了。接下来不能再使用这个临时表。
- 所以使用全局性临时表,##TempTableName。
- 但是它需要通过程序进行删除,不会在Session结束的时候自动消失。在存储过程开始的时候就应该判断这个临时表是不是存在。因为它不存在于当前数据库的sysobjects中,需要如下的函数进行判断:if object_id('tempdb..##TempTableName') is not null ,普通临时表也这样判断是不是存在。
- 在存储过程的最后。还是执行一下删除 drop table ##TempTableName。