2010-08-13 19 views
10

ich eine gespeicherte Prozedur auf SQL Server haben 2000 enthält:
select ... into ##Temp ...
...
drop table ##Temp
Es ist bereits ein Objekt mit dem Namen ‚## Temp‘ in der Datenbank

Wenn ich die gespeicherte Prozedur mit ADO ein zweites Mal ausführen, es Eingabeaufforderungen:
In der Datenbank befindet sich bereits ein Objekt namens '## Temp'.
Könnte mir jemand freundlicherweise sagen, was los ist?

+0

können Sie nicht einfach eine Tabellenvariable verwenden (wählen Sie .. in @temp). dann müssen Sie sich nicht um die Freigabe der Tabelle usw. kümmern. – RPM1984

+0

Die Tabellenstruktur ist dynamisch. Deshalb verwende ich temporäre Tabellen. – phoenies

Antwort

18

Sie sollten Ihre gespeicherte Prozedur neu schreiben, die temporäre Tabelle zu löschen, wenn es vorhanden ist, dann werden Sie nicht immer dieses Problem haben

IF (SELECT object_id('TempDB..##Temp')) IS NOT NULL 
BEGIN 
    DROP TABLE ##Temp 
END 
+0

Der Fehler ist Also das Problem in