Temporäre Tabellennamen [ERLEDIGT]

Advantage Database Server

Moderator: Moderatoren

Temporäre Tabellennamen [ERLEDIGT]

Beitragvon UliTs » Mi, 27. Apr 2016 10: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 14: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: 2370
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen

Re: Temporäre Tabellennamen

Beitragvon UliTs » Mi, 27. Apr 2016 11: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
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2370
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen

Re: Temporäre Tabellennamen

Beitragvon hschmidt » Mi, 27. Apr 2016 11: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
hschmidt
Rekursionen-Architekt
Rekursionen-Architekt
 
Beiträge: 157
Registriert: Mo, 09. Jan 2006 17:06
Wohnort: Paderborn

Re: Temporäre Tabellennamen [ERLEDIGT]

Beitragvon UliTs » Mi, 27. Apr 2016 14: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
UliTs
Der Entwickler von "Deep Thought"
Der Entwickler von "Deep Thought"
 
Beiträge: 2370
Registriert: Fr, 10. Feb 2006 9:51
Wohnort: Aachen


Zurück zu ADS

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 2 Gäste