2008-08-05 8 views
17

Beim Schreiben eines T-SQL-Skripts, das ich neu ausführen möchte, verwende ich oft temporäre Tabellen, um temporäre Daten zu speichern. Da die temporäre Tabelle spontan erstellt wird, möchte ich diese Tabelle nur löschen können, wenn sie existiert (bevor ich sie erstelle).Was ist der beste Weg festzustellen, ob eine temporäre Tabelle in SQL Server existiert?

Ich poste die Methode, die ich verwende, aber ich würde gerne sehen, ob es einen besseren Weg gibt.

Antwort

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

Die Funktion OBJECT_ID gibt die interne Objekt-ID für den angegebenen Objektnamen und -typ zurück. 'tempdb .. # t1' verweist auf die Tabelle # t1 in der Tempdb-Datenbank. 'U' ist für benutzerdefinierte Tabelle.

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, es sieht aus wie die Abfrage normale Benutzertabellen finden, aber nicht temporäre Tabellen. –

Verwandte Themen