Hallo,
ich habe folgendes Problem: Ich möchte über Delphi eine temporäre Tabelle in MS
SQL Server erzeugen. Das mache ich wie folgt:
Delphi-Quellcode:
with TADOQuery.Create(WPDataModule)
do
try
Connection := WPDataModule.Connection;
SQL.Clear;
SQL.Add('
SELECT * INTO #TempTable FROM MyTable');
ExecSQL;
finally
Free;
end;
Das blöde ist: Die Tabelle ist hinterher nicht mehr vorhanden. Auch wenn ich die gleiche TADOQuery verwende und nach dem ExecSQL z.B. folgendes schreibe:
Delphi-Quellcode:
SQL.Clear;
SQL.Add('
DROP TABLE #TempTable');
ExecSQL;
Auch dann ist die temporäre Tabelle schon weg. Nur wenn ich sowohl den SELECT- als auch den DROP-Befehl in die
SQL-Eigenschaft packe und dann erst ExecSQL aufrufe, ist die Tabelle beim zweiten Befehl noch sichtbar.
Für private, temporäre Tabellen (also die, die bei MS
SQL Server mit einem # beginnen) gilt, dass NUR die Verbindung, die die Tabelle angelegt hat, auch auf die Tabelle zugreifen kann. Offenbar beendet Delphi die Verbindung also sofort nach dem ExecSQL.
Frage: Gibt es eine Möglichkeit, die Verbindung offen zu halten? Welche Möglichkeit(en) gibt es sonst?
Marcus