我有这个代码应该删除一个临时表,如果它存在,但我仍然收到一个错误: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
答案 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