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 的结果 呢?
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