#temp表没有被删除

时间:2016-08-05 11:46:56

标签: sql sql-server-2008 tsql

我有这个代码应该删除一个临时表,如果它存在,但我仍然收到一个错误:Cannot drop the table '#jobsconsumed', because it does not exist or you do not have permission.有人可以帮助我吗?我的I.T.管理员认为这不是权限问题。

IF (SELECT object_id('TempDB.#jobsconsumed')) IS NULL
    BEGIN
    DROP Table #jobsconsumed
END 

2 个答案:

答案 0 :(得分:3)

IF (SELECT object_id('TempDB.#jobsconsumed')) IS NULL
    BEGIN
    DROP Table #jobsconsumed
END 

上述代码只有在TempTable存在时才会进入Begin子句。

要检查和删除TempTable,正确的方法是

IF object_id('Tempdb..#test') is Not null  
 is same as
  IF object_id('Tempdb.dbo.#test') is Not null  
Drop Table #test

在这种情况下不需要Begin和END子句,因为IF将在true时执行立即声明

TEMP表的架构方面的一些测试..

  use tempdb; 

 create schema hr

 create table hr.#t( c int) --this will work
 create table #t( c int) --this will fail

 create table #t1 --no schema ,so it will create a temp table in DBO Schema by default.

 --To drop the table
 drop table #t --this will drop across all schemas

答案 1 :(得分:0)

这对我来说适用于 MS SQL 2017

use tempdb
go

IF OBJECT_ID(N'tempdb..#yourtemptable', N'U') IS NOT NULL   
DROP TABLE #yourtemptable;  
GO