2015-05-21 19 views
1

我想在SQL中編寫一個過程,可以檢查本地臨時表是否存在以及是否使用它。我不想丟掉桌子。我已經找到了一種方法來刪除本地臨時表是:查找本地臨時表是否存在於sql中的任何地方並使用它

DROP TABLE IF EXISTS t; 

我也嘗試以下操作: 我創建一個本地臨時表TEMP_TABLE。然後我試着運行這個查詢:

select object_id('tempdb..TEMP_TABLE') 

這只是給了NULL。但如果我嘗試

select * from TEMP_TABLE 

它工作得很好。

那麼誰能幫助我找到一種方法來檢查本地臨時表是否存在於sql的任何地方。

+0

您使用的是哪個版本的Sybase? –

回答

1

我不知道你有什麼版本的Sybase,但這部作品在Sybase 11,所以我可以想像它會在任何版本中運行了太多:

Begin 
Create local Temporary table TEMP_TABLE (column1 int); //Create temp table 
// any other code needed to be executed if table did not exist 
Exception when others then 
// Code to be executed when table does exist 
end; 

這基本上是一試。 .catch for sybase。如果臨時表存在,它將拋出一個異常,在異常情況下,你可以運行你想知道該表已經存在的代碼。

+0

出於好奇,你知道爲什麼tempdb語法在sql中無法工作嗎?而且我在任何地方都使用了sql 16. – imankurpatel000

+0

我其實不知道爲什麼。說實話有點奇怪。如果它在同一個事務中執行,但是如果你正在尋找一個已經存在的臨時表,它似乎並不喜歡它,但我不知道爲什麼。 –

-1

在一個查詢中,您指的是數據庫,而在其他情況下您不是,請在兩個查詢下面嘗試。

select object_id('tempdb..TEMP_TABLE') 
select * from tempdb..TEMP_TABLE 


select object_id('TEMP_TABLE') 
select * from TEMP_TABLE 
+0

這些都不適用於SAP SQL Anywhere。有問題的 –

+0

它不是說SAP SQL,它只是說SQL。我的查詢將與Microsoft SQL Server一起工作。 – elmo

+0

除了使用小寫字母'a'外,OP確實聲明瞭「SQL Anywhere」。 – RobV

相關問題