0

我有一個存儲過程在表中導出一些數據。我想確保即使表格不存在,它也會被創建。如果它存在,我不想程序返回的There is already an object named 'myFinalTable' in the database. 爲了檢查我這樣做:如果不存在select into表

if not exists (SELECT * FROM INFORMATION_SCHEMA.TABLES 
      WHERE TABLE_NAME = N'dbo.myFinalTable') 
begin 
select * 
into dbo.myFinalTable 
from #someTempIhaveDataIn 
end 

然後我用

drop table dbo.myFinalTable 

跑一次。它的工作,然後我再次運行它(程序),它給了我上面提到的錯誤(已經有一個對象名爲..)

+1

你可能會發現,在尋找的結果'SELECT * FROM INFORMATION_SCHEMA.TABLES'啓發。 –

+0

我認爲這個查詢沒有錯,它應該工作。嘗試在其他窗口中激發相同的查詢,並確保您之前未創建'dbo.myFinalTable'。 – pedram

回答

1

您的查詢是不正確的。使用此:

SELECT * FROM INFORMATION_SCHEMA.TABLES 
      WHERE TABLE_NAME = N'myFinalTable' 
      AND TABLE_SCHEMA = N'dbo' 
1

試試這個

IF NOT EXISTS(SELECT * FROM sys.objects 
WHERE object_id = OBJECT_ID(N'[dbo].[TableName]') AND type in (N'U')) 
BEGIN 
    select * into dbo.myFinalTable from #someTempIhaveDataIn 
END