Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi CREATE TEMPORARY TABLE (https://www.delphipraxis.net/105132-create-temporary-table.html)

Gonso 16. Dez 2007 23:35

Datenbank: mssql • Zugriff über: query

CREATE TEMPORARY TABLE
 
hilfe

mysql

CREATE TEMPORARY TABLE tmp AS SELECT DISTINCT * FROM meinkunde

wie erstellt man so eine tabelle in mssql
habe probiert

CREATE TABLE tmp AS SELECT DISTINCT * FROM meinkunde

klappt nicht, felder der tabelle kenne ich nicht darum sollte das so gehen wie unter mysql

NormanNG 17. Dez 2007 07:18

Re: CREATE TEMPORARY TABLE
 
Hi,

SQL-Code:
SELECT DISTINCT * INTO TEMPTAB FROM meinkunde
Erzeugt eine neue Tabelle mit dem Namen TEMPTAB...

Jelly 17. Dez 2007 08:09

Re: CREATE TEMPORARY TABLE
 
In MSSQL haben temporäre Tabellen den Präfix #... Also etwa so

SQL-Code:
create table #temp (id int, name varchar(30))

PaulJr 17. Dez 2007 09:18

Re: CREATE TEMPORARY TABLE
 
Hallo Jelly

Gonso hat geschrieben:
(…)
"felder der tabelle kenne ich nicht darum sollte das so gehen wie unter mysql"
(…)

Das bedeutet, dass Er die Datenbankfelder einer Tabelle nicht kennt(!). Darum sucht er nach solcher Lösung wie unter MySQL, wo bei Erstellung seiner Tabelle braucht er auch nicht zu wissen welche Tabellenfelder sich dort befinden...

Die richtige Antwort auf seine Frage liefer hier NormanNG

Gruß

Paul Jr.

Jelly 17. Dez 2007 09:32

Re: CREATE TEMPORARY TABLE
 
Zitat:

Zitat von PaulJr
"felder der tabelle kenne ich nicht darum sollte das so gehen wie unter mysql"

Stimmt. Das hatte ich wohl überlesen.

Zitat:

Zitat von PaulJr
Die richtige Antwort auf seine Frage liefer hier NormanNG

Wobei in MSSQL, will man wirklich temporäre Tabellen nutzen, ein # vor den Tabellennamen zu stellen ist.[/quote]

vlees91 17. Dez 2007 09:39

Re: CREATE TEMPORARY TABLE
 
Woher ist denn CREATE TEMPORARY TABLE...? Ich kannte nur CREATE VIEW ... (falls es wirklich das gleiche macht)

Jelly 17. Dez 2007 10:01

Re: CREATE TEMPORARY TABLE
 
Warum sollte eine Temporary Table das Gleiche sein wie eine View :gruebel:

TempTables unter MSSQL sind temporäre Tabellen, die im Speicher gehalten werden, und die solange gültig sind, bis die DB Verbindung vom Client getrennt wird. Auch sind sie nur aus dieser Session heraus auslesbar. So kann jeder Client seine eigenen temp Tables definieren, es sei denn, man macht sie global temporär, mit doppelten Präfix ##

PaulJr 17. Dez 2007 10:33

Re: CREATE TEMPORARY TABLE
 
Also genau genommen will Gonso hier mit Temporären Tabellen arbeiten.

Für mich sieht das fast so aus, als möchte er (vermute) doppelte Datensätze behandeln usw…
und dabei keine Leiche liegen lassen..

Nun dann die Antwort von NormanNG müsste man nur leicht anpassen:

SQL-Code:
SELECT DISTINCT * INTO ##TEMPTAB FROM meinkunde
Viele Grüße

Paul Jr.

omata 17. Dez 2007 16:33

Re: CREATE TEMPORARY TABLE
 
## = globale temporäre Tabelle
# = lokale temporäre Tabelle

MySQL kennt nur die globale temporäre Tabelle, in MsSQL trifft man aber meist auf die lokale temporäre Tabelle.

Gruss
Thorsten

Gonso 17. Dez 2007 22:34

Re: CREATE TEMPORARY TABLE
 
danke

Gonso 23. Dez 2007 11:04

Re: CREATE TEMPORARY TABLE
 
von @omata:
>> ## = globale temporäre Tabelle
>> # = lokale temporäre Tabelle

>> MySQL kennt nur die globale temporäre Tabelle, in MsSQL trifft man aber meist auf die lokale
>> temporäre Tabelle.

von mir:

was ist besser globale oder lokale temporären tabellen? (vorteile, nachteile)
ich benutze diese nur ganz kurz um daten zu transferieren oder zu verarbeiten.

muss ich die temporären tabellen hinterher löschen oder verschwinden sie von allein? (wenn ja dann wann?)

omata 23. Dez 2007 23:18

Re: CREATE TEMPORARY TABLE
 
Hallo Gonso,

so lokal wie möglich sollte man immer arbeiten. Also solltest du die lokalen temporären Tabellen bevorzugen. Nur wenn es nicht anders geht kommen die globalen temporären Tabellen zum Einsatz. Und diesen Fall hatte ich bis jetzt nur einmal, nämlich als ich mit dynamischem SQL gearbeitet habe. Im normalen Einsatz sollte die # also völlig reichen.

Ich persönlich lösche die temporären Tabellen immer selber am Schluss der Prozedur mit DROP TABLE #... ich finde das sauberer, auch wenn es nicht unbedingt nötig ist. Wenn du allerdings deine Prozedur mal in den Query Analyser kopierst um dort etwas zu testen, dann wirst du festellen, dass die Tabelle erhalten bleibt und somit ein erneutes Ausführen nicht möglich ist. Auch deshalb lösche ich die Tabellen selber, dann brauche ich mich nicht zu ärgern.

Gruss
Thorsten

Gonso 24. Dez 2007 01:16

Re: CREATE TEMPORARY TABLE
 
hallo omata!

ich bewundere dein wissen.

danke

Jelly 24. Dez 2007 08:26

Re: CREATE TEMPORARY TABLE
 
Zitat:

Zitat von omata
Ich persönlich lösche die temporären Tabellen immer selber am Schluss der Prozedur mit DROP TABLE #... ich finde das sauberer, auch wenn es nicht unbedingt nötig ist. Wenn du allerdings deine Prozedur mal in den Query Analyser kopierst um dort etwas zu testen, dann wirst du festellen, dass die Tabelle erhalten bleibt und somit ein erneutes Ausführen nicht möglich ist.

Die temporären Tabellen werden erst dann automatisch gelöscht, wenn die Connection geschlossen wird.
Und deshalb ist es eben sicherlich immer eine gute Idee die Tabelle wieder zu löschen, sobald sie nicht mehr gebraucht wird.


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:03 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz