Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi sql (https://www.delphipraxis.net/12558-sql.html)

Leuselator 4. Dez 2003 23:36

Re: sql
 
Bin verunsichert.
In MS-SQL (kenn ich ab besten - was nicht heißen muß das ich's gut kenne :-)) gibt es Variablen, die von der Deklaration dem Oracle-Statement sehr änlich sind:
SQL-Code:
Declare @Variablenname Varchar(30), -- @ leitet lokale Variable ein
        @@AndererName Integer      -- @@ für globale Variablen

set @Variablenname = 'Wert' -- Wertzuweisung in TransactSQL

select @@AndererName = id from Tabelle where Bedingung -- Wertzuweisung aus Abfrage

select * from Tabelle where ID = @@AndererName -- Zugriff auf Variable
Das alles versteht sich aber als "innerhalb des DB-Servers" gültig und zugreifbar. Wenn ich von Delphi aus, also von Clientseite(ausserhalb Server) solche Variablen füllen möchte, dann mache ich es bisher so:
Delphi-Quellcode:
Query.SQL.Add('Declare @MeineVariable Integer              ');
Query.SQL.Add('   set @MeineVariable = :MeinDelphiParameter'); // dieser Parameter wird von Delphi
Query.SQL.Add(' select *                                    '); // vor senden an die DB ersetzt
Query.SQL.Add('  from Tabelle                             '); // sagt zumindest der Profiler
Query.SQL.Add(' where Feld = @MeineVariable');
Ende meines Lateins.
Gruß
*InLernmodusUmschalt*

Robert_G 5. Dez 2003 09:17

Re: sql
 
@Leuselator
Dein ":MeinDelphiParameter" ist eine Variable mit der die DB arbeitet.
Außer die Standard Delphi Compos zum DB-Zugriff ersetzen tatsächlich den SQL-Code.
(Wär aber ziemlich bescheuert)


Variablen sollte man eigentlich immer verwenden und auf fixe Vergleiche verzichten.
SQL-Code:
XYZ = 'Hallo'
Denn wie Garby bereits sagte, deine DB wird jedesmal den Code neu Parsen müssen, die Ursprungsmenge der vorherigen Abfrage verwerfen und alles (wirklich alles!) neu holen.
Mit bind-Variablen bleibt das Statement gleich - Es wird also nur neu gefiltert.

Gerade in Anwendnugen, bei denen von vielen Clients ähnliche Abfragen gestellt werden wirst du merken, dass diese beim ersten Mal wie normal laufen und danach nur noch ein paar Millisekunden!

Ich hoffe das beendet jetzt diese OT - Variablendiskussion.

Klaus D. 7. Dez 2003 13:51

Re: sql
 
Hallo Delphi-Gemeinde
weiß jemand ob ADS mit dem Operator"AS" in einem SQL-String probleme hat?
Code:
SELECT * FROM tbl_Typenschild AS TS
fehler!
lasse ich "AS" weg klappt alles,im Codes vom Leuselator verwendete er einmal den Operator !(vom 1.12."3.20Uhr)
Danke Klaus :gruebel:

r_kerber 7. Dez 2003 14:56

Re: sql
 
Hallo Klaus,

wie es bei ADS weiß ich nicht. Ich verwende den Operator "AS" bei anderen DB's (Informix, Oracle, Interbase, ...) ausschließlich für Tabellenspalten. Bei den Tabellen selbst lasse ich diesen weg!

Robert_G 7. Dez 2003 19:48

Re: sql
 
"AS" kann man in Standard-SQL nicht für ein Tabellen-Alias verwenden, schreib das Alias einfach dahinter.


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:45 Uhr.
Seite 3 von 3     123   

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