Temporäre Tabellennamen [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Temporäre Tabellennamen [ERLEDIGT]

Beitrag von UliTs »

Hallo allerseits,

ich benutze inzwischen intensiv SQL-Scripts.
In einem sehr aufwändigen Script benutze ich zusätzlich temporäre Tabellen z.B. mit Namen #Tmp1,#Tmp2 etc.
Als Ergebnis gibt es schließlich eine Tabelle #TmpErgebnis, welche ich in einer View mittels

Code: Alles auswählen

select * from #TmpErgebnis
zurückgebe. Alle anderen temporären Tabellen lösche ich bereits innerhalb des Scripts wieder.
Wenn ich nun diese View innerhalb der gleichen Connection mehrfach gleichzeitig geöffnet haben will kommt es logischerweise zu einem Konflikt, da es die Tabelle #TmpErgebnis ja nur 1x geben kann.
Lösung vermutlich: mit variablen Tabellennamen arbeiten
Gibt es beim ADS eine Funktion, die mir so einen Tabellennamen (der noch nicht verwendet wird) generiert?
Zuletzt geändert von UliTs am Mi, 27. Apr 2016 15:40, insgesamt 1-mal geändert.
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Temporäre Tabellennamen

Beitrag von UliTs »

Inzwischen habe ich folgendes herausgefunden.
Ich kann mir einen temporären Tabellennamen generieren:

Code: Alles auswählen

declare FileName string;
set FileName = '#'+NewIdString( "F" );
Nur wie verwende ich diesen?
Z.B.

Code: Alles auswählen

select * into FileName from Personen where Id<6;
erzeugt eine Tabelle mit Namen "FileName"...
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
Beiträge: 164
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Hat sich bedankt: 2 Mal
Kontaktdaten:

Re: Temporäre Tabellennamen

Beitrag von hschmidt »

Hallo Uli,

nicht getestet, aber in der ADS-Hilfe wird empfohlen, Variablen mit einem führenden '@' zu deklarieren:

Code: Alles auswählen

DECLARE @empid Integer;

@empid = 1;

UPDATE employees SET ManagerID = @empid WHERE branch = 'R&D';
 
Viele Grüße

Hans
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2828
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Hat sich bedankt: 259 Mal
Danksagung erhalten: 12 Mal
Kontaktdaten:

Re: Temporäre Tabellennamen [ERLEDIGT]

Beitrag von UliTs »

Hallo Hans,

danke für Deinen Tipp. Aber leider habe ich damit auch keine Lösung gefunden.
Aber mit Hilfe von Stored Procedures klappt es :D . Ich kann nach füllen der Tabelle __Output die temporäre Tabelle sofort löschen.
Dann ist es egal, wenn ich einen fixen temporären Tabellennamen angeben muß :D :D :

Code: Alles auswählen

  INSERT INTO __Output select * from #Tmp5;
  TRY DROP TABLE #Tmp5; CATCH ALL END TRY;
Uli
-------
Mitglied XuG Cologne
Mitglied XuG Osnabrück
Antworten