Hi Matti,
my $sth = $dbh->prepare(<<EOF);
SELECT t1.col1, t1.col2, t1.col3, t1.col4, t2.col1
FROM table1 t1, table2 t2
WHERE t1.id = t2.id
ORDER BY t1.col1 DESC, t2.col2,
LIMIT 15 OFFSET 40
EOF
Wie schreibst du denn dein SQL in deinen Code?
(dieses Posting bitte mit nichtproportionalem Zeichensatz lesen ...)
ich würde diese Anweisung ungefähr so notieren (bei den Zeilenumbrüchen bin ich mir nicht sicher, ich habe selten sooo komplexe Statements ... )
my $sql_statement = 'SELECT t1.col1'
. ', t1.col2'
. ', t1.col3'
. ', t1.col4'
. ', t2.col1'
. ' FROM table1 t1'
. ', table2 t2'
. ' WHERE t1.id = t2.id'
. ' ORDER BY t1.col1 DESC'
. ', t2.col2'
. ' LIMIT 15'
. ' OFFSET 40'
. ';'
;
my $sql_handle = $dbh->prepare($sql_statement);
Meine Zielsetzung:
a) Ich will möglichst einfach einzelne Zeilen auskommentieren dürfen, ohne irgendwas sonst
ändern zu müssen (in der "Probierphase" des SQL-Statements hilft das manchmal sehr).
b) Ich will eine gemeinsame Spalte zwischen Schlüsselworten und Operandenlisten haben,
weil sich mein Auge daran zu orientieren gewöhnt hat.
c) Ich könnte rechts neben jede Zeile einen Kommentar schreiben (z. B. warum ich dieses Feld
brauche oder in welcher Version sich das inkompatibel geändert hat usw.). 4GL-Code ist viel
dokumentationsbedürftiger als 3GL-Code, finde ich, weil man sich der tatsächlichen Effekte
viel weniger bewußt ist (denn die hat man ja dem Code-Generator überlassen).
d) HERE-Dokumente verwende ich grundsätzlich nicht, weil diese meine Einrückungstechnik
unterlaufen - und die ist mir sehr wichtig beim schnellen Erfassen der Code-Ablaufstruktur.
Ästhetische Aspekte sind halt sehr subjektiv ... insbesondere ist es Geschmackssache, ob das Leerzeichen ans Ende oder an den Anfang einer Zeile gehört (vorne sehe ich besser, daß ich es nicht vergessen habe).
Viele Grüße
Michael
P.S.: Das Semikolon bin ich so gewohnt, weil z. B. die mySQL-Kommandozeilen-Shnittstelle es verlangt und es hier nicht schadet.
T'Pol: I apologize if I acted inappropriately.
V'Lar: Not at all. In fact, your bluntness made me reconsider some of my positions. Much as it has now.
(sh:| fo:} ch:] rl:( br:^ n4:( ie:% mo:) va:| de:/ zu:| fl:( ss:) ls:~ js:|)