簡體   English   中英

無法刪除臨時表無效的對象名稱'#Temp1'錯誤 - 在sql server中

[英]Can not drop a temp table Invalid object name '#Temp1' error - in sql server

我有以下代碼拋出一個無效的對象名稱'#Temp1'錯誤....

每次迭代,我截斷表(DROP表也沒有工作)....沒有明顯的跳出來作為一個問題.....感謝任何想法...

While @@Fetch_Status = 0 -- For each ObsSetCode - 
            BEGIN           

                PRINT 'I am processing the SECTION ------ ' + @dl_EventSetName
                PRINT 'I am processing the ObsSetCode ------ ' + @ObsSetList

                IF OBJECT_ID('tempdb..#Temp1') IS NOT NULL
                BEGIN
                    TRUNCATE TABLE #Temp1
                END

                    Insert Into #Temp1 
                    Select o.EventSetName,
                           o.EventSetDisplay,
                           o.EventSetDescription,
                           o.ChildSetName,
                           ROW_NUMBER() Over (Order By o.ChildSetName) RN                  
                    From   ##ObsSetLevel o,
                           ##Final f
                    Where  f.ChildSetName = o.EventSetName and 
                           o.EventSetName = @ObsSetList 
                    Order By o.ChildSetName asc  

                    Insert into ##Final
                    Select *
                    From #Temp1
                    Where  RN = 1
                    Union
                    Select '', '', 
                           '', ChildSetName, RN
                    From #Temp1
                    Where RN > 1


                   Insert Into ##Final
                   Select distinct o.ChildSetName,
                          o.ChildSetName,
                          o.ChildSetName,
                          '',
                          ''
                   From   ##ObsSetLevel o,
                          ##Final f
                   Where f.ChildSetName = o.EventSetName and 
                         o.EventSetName = @ObsSetList     
                   Order By o.ChildSetName asc

                    PRINT @ObsSetList   
                    FETCH NEXT FROM ObsSetList_cursor Into @ObsSetList


            END

改變你選擇看起來像這樣:

Select o.EventSetName,
        o.EventSetDisplay,
        o.EventSetDescription,
        o.ChildSetName,
        ROW_NUMBER() Over (Order By o.ChildSetName) RN
into #Temp1                 
From   ##ObsSetLevel o,
       ##Final f
Where  f.ChildSetName = o.EventSetName and 
        o.EventSetName = @ObsSetList 
Order By o.ChildSetName asc

除非已定義表或已存在,否則不能使用Insert Into

你不是在任何地方創建#Temp

  • 如果找到,請刪除該表。
  • 使用第一個SELECT創建表。

請嘗試以下方法:

While @@Fetch_Status = 0 -- For each ObsSetCode - 
BEGIN           

    PRINT 'I am processing the SECTION ------ ' + @dl_EventSetName
    PRINT 'I am processing the ObsSetCode ------ ' + @ObsSetList

    IF OBJECT_ID('tempdb..#Temp1') IS NOT NULL
    BEGIN
        DROP TABLE #Temp1  /* DROP THE TABLE IF IT IS FOUND */
    END

        Select o.EventSetName,
               o.EventSetDisplay,
               o.EventSetDescription,
               o.ChildSetName,
               ROW_NUMBER() Over (Order By o.ChildSetName) RN                  
        Into   #Temp1 /* Create the table with your SELECT */
        From   ##ObsSetLevel o,
               ##Final f
        Where  f.ChildSetName = o.EventSetName and 
               o.EventSetName = @ObsSetList 
        Order By o.ChildSetName asc  
...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM