2016-08-05 14 views
1

テンポラリテーブルが存在する場合は削除する必要がありますが、まだエラーが発生しています。Cannot drop the table '#jobsconsumed', because it does not exist or you do not have permission.誰かが私を助けてくれますか?私のI.T. adminは権限の問題ではないと考えています。#tempテーブルが削除されていません

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

は、私はあなたが2個のドットを試みるべきだと思う: 'のTempDB ..#jobsconsumed' – HoneyBadger

+0

2つのドットは何をしますか? – whatwhatwhat

+1

おそらく 'IS NOT NULL'は本当に必要なロジックです。存在しないものを削除するのはなぜですか? –

答えて

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

上記のコードは必要はありません正しい方法は

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

を下回っている、TempTableのを確認し、ドロップし

に... TempTableのが存在する場合にのみ、句を開始入りますこの例では、Begin End句とEND句は、真のときにIFが即時ステートメントを実行するため、

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 
+0

質問:私は#tempテーブルに値を入れるためにこの行を使用しています。 '(t.tref_type = 'I'またはt.trans_type = 'W'))(SELECT t.ref_num、t.ref_line_suf INTO #jobsconsumed FROM ISW_LPTrans AS t where t.item = @item AND t.lot = @lot AND 'しかし、あなたの答えによると、これは' dbo。#jobsconsumed'の代わりに '#jobsconsumed'を使っているので失敗します。それはなぜ失敗しないのですか? – whatwhatwhat

+1

これは失敗しません.bcozでは、デフォルトでdbo .schemaを作成します。 – TheGameiswar

関連する問題