紧急求助一个郁闷的问题
我的SQL语句如下:
SELECT * INTO #Temp_ViewReport067 FROM (SELECT SupTitle,QC=(SELECT ISNULL(SUM(Due),0) FROM QC_Due_200705 WHERE SysId=A.SysId)+(SELECT ISNULL(SUM(CASE BusCls WHEN '0001 ' THEN BusMoney-BusAgio WHEN '0002 ' THEN -(BusMoney-BusAgio) ELSE 0 END),0)+ISNULL(SUM(CASE BusPayType WHEN '0001 ' THEN -BusMoneyS WHEN '0002 ' THEN -BusMoneyS ELSE 0 END),0) From Jxc_Business_200705 WHERE (BusRmentType= '0000 ' OR BusRmentType= '0001 ') AND BusDate < '2007-5-10 ' AND BusCS=A.SysId AND BusCls IN ( '0001 ', '0002 ', '0013 ')),BQZ=(SELECT ISNULL(SUM(CASE BusCls WHEN '0001 ' THEN BusMoney-BusAgio WHEN '0002 ' THEN -(BusMoney-BusAgio) ELSE 0 END),0)+ISNULL(SUM(CASE BusPayType WHEN '0003 ' THEN -BusMoneyS WHEN '0004 ' THEN BusMoneyS ELSE 0 END),0) From Jxc_Business_200705 WHERE (BusRmentType= '0000 ' OR BusRmentType= '0001 ') AND BusDate> = '2007-5-10 ' AND BusDate <= '2007-5-31 ' AND BusCS=A.SysId AND BusCls IN ( '0001 ', '0002 ', '0013 ')),BQF=(SELECT ISNULL(SUM(CASE BusPayType WHEN '0001 ' THEN BusMoneyS WHEN '0002 ' THEN BusMoneyS ELSE 0 END),0) From Jxc_Business_200705 WHERE (BusRmentType= '0000 ' OR BusRmentType= '0001 ') AND BusDate> = '2007-5-10 ' AND BusDate <= '2007-5-31 ' AND BusCS=A.SysId AND BusCls IN ( '0001 ', '0002 ', '0013 '))FROM Jxc_Supplier A) T
这句SQL在查询分析器里面执行很正常,但是放在程序里却总是提示“数据库中已存在名为 '#Temp_ViewReport067 ' 的对象。”,真是郁闷,我可以绝对保证执行语句前不存在#Temp_ViewReport067这个对象!!!
------解决方案--------------------在执行这条语句前加 drop table #Temp_ViewReport067 不报错,你才能绝对保证
------解决方案--------------------局部临时表在当前连接有效,如果连接关闭,会自动销毁局部临时表。
如果在一个连接中多次执行,必须在每次执行后,手动销毁此临时表,以避免在当前连接中再次创建临时表时,提示已经存在。
------解决方案--------------------一楼所说的有点儿问题,如:对于第一次执行时,没有此临时表,drop会出错。
最好是每次创建后,手工drop掉。
------解决方案--------------------select *
into #t
from 表名
drop table #t
这种用法没有问题。