sql server 中的 if exists

来源:百度知道 编辑:UC知道 时间:2024/05/04 09:40:12
IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='#temp')
DROP TABLE #temp
GO
SELECT ID,XM,ADDDW
INTO #temp
FROM CKZD
GO
SELECT * #temp

第一次执行时,会列出#temp中的数据。
但再次执行时,#temp中的数据一闪而过,消息提示:
数据库中已存在名为 '#temp' 的对象。

(78 行受影响)

为什么再次执行时 结果不是select * #temp 的结果 呢?

IF EXISTS (SELECT * FROM SYSOBJECTS WHERE NAME='#temp')
DROP TABLE #temp
GO
SELECT ID,XM,ADDDW
INTO #temp
FROM CKZD
GO
SELECT * #temp
DROP TABLE #temp

临时表用完就要删

临时表是不存在表SYSOBJECTS中的,当然会出现错误
if exists ( object_id('Tempdb..#temp') ) 也不行,因为无论是否存在表#temp都会返回一行的,所以这个条件永远成立
应该用
if ( object_id('Tempdb..#temp') is not null)
DROP TABLE #temp
GO

因为你那个判断临时表是否存在的语句不正确,应该这样写
IF EXISTS (select object_id('Tempdb..#temp'))
DROP TABLE #temp
GO