日期:2014-05-18  浏览次数:20777 次

object_id('#temp')返回值是null,但是临时表里有数据?
在一个存储过程里写了这样的语句
if object_id('#temp') is not null 
drop table #temp

select... into #temp


但是发现临时表里有数据,而上一句没有执行。object_id('#temp') 返回值是null,请问是什么原因?

------解决方案--------------------
SQL code

if object_id('tempdb..#temp') is not null  
drop table #temp
go

------解决方案--------------------
你这个判断语句语法不正确.
一般是这个格式:
SQL code

IF  EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[tablename]') AND type in (N'U'))
DROP TABLE [dbo].[tablename]

------解决方案--------------------
对于object_id的描述,见下面的帮助文档,可能LZ会清楚些

当该参数对系统函数可选时,则系统采用当前数据库、主机、服务器用户或数据库用户。内置函数后面必须跟圆括号。

如果指定一个临时表名,则必须在临时表名前面加上数据库名,例如:

SELECT OBJECT_ID('tempdb..#mytemptable')