Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Können Unterschiede beim DB-Zugriff am Provider liegen? (https://www.delphipraxis.net/160717-koennen-unterschiede-beim-db-zugriff-am-provider-liegen.html)

Jumpy 27. Mai 2011 15:23

Datenbank: Oracle • Version: 10g • Zugriff über: ADO

Können Unterschiede beim DB-Zugriff am Provider liegen?
 
Hallo,

schreibe folgendes SQL-Statement in einer MemoBox und gebe das dann (über: Query.SQL.Text := Memo.Text;) an eine TADOQuery weiter:

Code:
Select
  Feld1,
--Feld2,
  Feld3,
  Feld4
From wfm.Test
Durch -- ist ja Feld 2 auskommentiert.

Läuft die Verbindung über Oracles ODBC-Treiber klappt das Ganze.

Greife ich aber ohne ODBC, direkt mit dem Oracle-Provider auf die DB zu, so bekomme ich die Fehlermeldung, dass das SQL-Statement falsch ist. Bin der Meinung herausgefunden zu haben, dass er nun alles ab dem -- auskommentiert, als Statement quasi nur "Select Feld1," ankommt.

Kann das sein?

shmia 27. Mai 2011 15:31

AW: Können Unterschiede beim DB-Zugriff am Provider liegen?
 
Das könnte schon sein.
Schaut man sich folgende Query an:
SQL-Code:
SELECT * FROM Tabelle
WHERE Feld=42
dann könnte man ja auf die Idee kommen, den Zeilenumbruch durch ein Leerzeichen zu ersetzen:
SQL-Code:
SELECT * FROM Tabelle WHERE Feld=42
Genau die gleiche Query; nur andere Schreibweise.
Die Annahme dass Zeilenumbruch ein Leerzeichen sei funktioniert wunderbar und fehlerfrei, bis halt jemand kommt und mit "--" eine Zeile auskommentieren möchte.

Du könntest deine Annahme mit folgender Query bestätigen:
SQL-Code:
Select
  Feld1
FROM wfm.Test
--Feld2,
  Feld3,
  Feld4
From wfm.Test

jobo 27. Mai 2011 15:59

AW: Können Unterschiede beim DB-Zugriff am Provider liegen?
 
Ich kann das nicht nachvollziehen (MS Oder Oracle Provider, egal). Es wird immer nur die Zeile weggelassen, die auskommentiert ist.
Vielleicht hängts an einem Semicolon?
Vielleicht hast Du "kranke" Zeilenumbrüche?


P.S: Was ist die genau Fehlermeldung?

rainerg 27. Mai 2011 18:11

AW: Können Unterschiede beim DB-Zugriff am Provider liegen?
 
Zitat:

Zitat von Jumpy (Beitrag 1103331)
.

Greife ich aber ohne ODBC, direkt mit dem Oracle-Provider auf die DB zu, so bekomme ich die Fehlermeldung, dass das SQL-Statement falsch ist. Bin der Meinung herausgefunden zu haben, dass er nun alles ab dem -- auskommentiert, als Statement quasi nur "Select Feld1," ankommt.

Und wenn es einfach nur an den -- liegt, die in diesem Fall überhaupt nicht gemocht werden?

DeddyH 27. Mai 2011 18:14

AW: Können Unterschiede beim DB-Zugriff am Provider liegen?
 
Dann nimmt man halt /**/

Jumpy 29. Mai 2011 22:33

AW: Können Unterschiede beim DB-Zugriff am Provider liegen?
 
Zitat:

Zitat von rainerg (Beitrag 1103364)
Zitat:

Zitat von Jumpy (Beitrag 1103331)
.

Greife ich aber ohne ODBC, direkt mit dem Oracle-Provider auf die DB zu, so bekomme ich die Fehlermeldung, dass das SQL-Statement falsch ist. Bin der Meinung herausgefunden zu haben, dass er nun alles ab dem -- auskommentiert, als Statement quasi nur "Select Feld1," ankommt.

Und wenn es einfach nur an den -- liegt, die in diesem Fall überhaupt nicht gemocht werden?

Select *
From Tabelle
--blabla

funktioniert. Will heißen, wenn das Statement, das vor dem -- steht, soweit OK ist, wird der Select ausgeführt. D.h. am -- selber stört es sich nicht.

DeddyH 30. Mai 2011 07:35

AW: Können Unterschiede beim DB-Zugriff am Provider liegen?
 
Ich vermute wie shmia auch, dass Zeilenumbrüche in Leerzeichen umgewandelt werden. Daraus folgt, dass alles nach dem -- komplett ignoriert wird. Für Dich heißt das also, dass Du entweder auf Kommentare verzichtest oder eben eine alternative Syntax verwendest, welche über ein Kommentarendezeichen verfügt.

Jumpy 30. Mai 2011 09:06

AW: Können Unterschiede beim DB-Zugriff am Provider liegen?
 
Hallo zusammen,

konnte shmia's und DeddyH's Vermutung mit ein paar Test bestätigen. Warum das aber so ist, konnte ich nicht herausfinden, ist aber auch egal, da es mir mal wieder nur ums Wissen ging.
Es liegt aber mal wieder am 9er Oracle Client, auf den neuen Rechenrn mit 10er oder 11er Client gab es nämlich keine Probleme.

Das Benutzen anderer Kommentarzeichen ist da der Workarround der Stunde, wobei das in sofern blöd ist, als das das der Workarround für den Workarround ist (lange Geschichte, die ein paar alte Threads von mir betrifft (z.B. den zu LONG-Datentypen)). Konsequenz wird erstmal ein baldiges Upgrade der Clients sein (soweit möglich)und irgendwann mal vllt. der Wechsel zu nativen Komponenten, die ja einige mir schon öfters vorgeschlagen haben (auf jeden Fall weg von ODBC).

Danke und Schluss!


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:41 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