Das Forentreffen 2018 findet am 20./21. April in Dresden statt. Weitere Infos hier
Zur Homepage des Deutschsprachige Xbase-Entwickler e. V.
Xbase++-Wiki des Deutschsprachige Xbase-Entwickler e. V.

Temporäre Tabellennamen [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Antworten
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
Beiträge: 2436
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Temporäre Tabellennamen [ERLEDIGT]

Beitrag von UliTs » Mi, 27. Apr 2016 11:26

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: 2436
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: Temporäre Tabellennamen

Beitrag von UliTs » Mi, 27. Apr 2016 12:06

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: 157
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn
Kontaktdaten:

Re: Temporäre Tabellennamen

Beitrag von hschmidt » Mi, 27. Apr 2016 12:30

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: 2436
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen
Kontaktdaten:

Re: Temporäre Tabellennamen [ERLEDIGT]

Beitrag von UliTs » Mi, 27. Apr 2016 15:39

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