2009-07-14 7 views
0

Ich stoße auf ein interessantes Problem mit einer Anwendung, die von Oracle 9i auf 10g migriert wurde.
Zuvor hatten wir ein Problem, wenn ein Feld doppelte Anführungszeichen enthielt, da Oracle-Datensätze gekapselte Felder in doppelte Anführungszeichen setzten.Unterschreibt Oracle 10g automatisch doppelte Anführungszeichen in Recordsets?

Beispiel: "feld1" || "field2" || "Feld "Y" 3" || "Field4"

Da der Übergang zu 10 g, glaube ich, dass die Oracle Client-seitige Treiber ist Parsen die Anführungszeichen und ersetzen sie mit "

Leider habe ich keine alte 9i-Umgebung, um meine Theorie zu testen.

Haben Sie ein ähnliches Verhalten beobachtet oder kann jemand validieren, wenn meine Theorie wahr ist?

+0

Doppelte Anführungszeichen werden von Oracle verwendet, um die Namen von Bezeichnern in einer Abfrage zu begrenzen, z. WÄHLEN SIE "EMPNO" VON "EMP". Dieser Ausdruck scheint nicht Teil von gültigem SQL zu sein. Mit zusätzlichen Leerzeichen für Klarheit: "field1" || "Feld2" || "Feld" Y "3" || "field4" - etwas fehlt. –

+0

Was ich gepostet habe, sind die Ergebnisse einer Abfrage, die in einem Recordset an VB zurückgegeben werden. Ich versuche festzustellen, ob der Treiber doppelte Anführungszeichen entkommt. Ich kann keinen Beweis dafür finden, dass mein Anwendungscode dies tut. – bitstream

Antwort

0

Es ist ein estrange Verhalten. Können Sie Ihre NLS_xx environment variables überprüfen? Einige NLS_xx-Variablen können Zeichen übersetzen, zum Beispiel NLS_LANG kann Acutes von einem lateinischen Zeichensatz auf dem Client in einen us2ascii-Zeichensatz auf dem Server übersetzen.

Um sicher zu sein, was läuft, versuchen Sie trace Net connections. Sie werden sehen, wie sich alles von einer Seite zur anderen bewegt. Seien Sie vorsichtig ...

Verwandte Themen