2015-05-21 7 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 для sybase. Если существует таблица Temp, она выдает исключение, в исключении вы можете запустить код, который хотите знать, что таблица уже существует.

+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

ОП указывает состояние «SQL Anywhere», за исключением строчки «a». – RobV