2008-08-05 7 views
17

Podczas pisania skryptu T-SQL, który planuję ponownie uruchomić, często używam tabel tymczasowych do przechowywania tymczasowych danych. Ponieważ tabela tymczasowa jest tworzona w locie, chciałbym móc usunąć tę tabelę tylko wtedy, gdy istnieje (zanim ją utworzę).Jaki jest najlepszy sposób określenia, czy tabela tymczasowa istnieje w programie SQL Server?

Opublikuję metodę, której używam, ale chciałbym sprawdzić, czy jest lepszy sposób.

Odpowiedz

25
IF Object_Id('TempDB..#TempTable') IS NOT NULL 
BEGIN 
    DROP TABLE #TempTable 
END 
14

Funkcja OBJECT_ID zwraca identyfikator obiektu wewnętrznego dla podanej nazwy i typu obiektu. "tempdb .. # t1" odnosi się do tabeli # t1 w bazie danych tempdb. "U" dotyczy tabeli zdefiniowanej przez użytkownika.

IF OBJECT_ID('tempdb..#t1', 'U') IS NOT NULL 
    DROP TABLE #t1 

CREATE TABLE #t1 
(
    id INT IDENTITY(1,1), 
    msg VARCHAR(255) 
) 
0
SELECT name 
FROM sysobjects 
WHERE type = 'U' AND name = 'TempTable' 
+1

Keith, wygląda na to, że zapytanie znajdzie normalne tabele użytkowników, ale nie tabel tymczasowych. –