-
ODBC - Sonderzeichen INSERT auf I5 klappt nicht
Wenn wir mit dem Linux iSeries-ODBC-Treiber ein INSERT Statement mit Sonderzeichen (z.B. ÄÖÜ ...) absetzen, bekommen wir folgende Fehlermeldung:
SQL error: [unixODBC][IBM][iSeries Access ODBC Driver][DB2 UDB]SQL0104 - Error message text unavailable. Message can not be translated successfully., SQL state 37000 in SQLExecDirect
Ein SELECT auf I5-Daten mit Sonderzeichen klappt ohne Probleme.
-
Der SQL0104 deutete auf einen Syntaxfehler des Insert's hin.
Das hat mit Sonderzeichen nichts zu tun.
Stelle den vollständigen SQL mal hier rein.
Übrigens:
Die SQL-Fehler kannst du auf der AS/400 mit
DSPMSGD RANGE(SQL0104) MSGF(QSQLMSG)
anschauen.
-
Ein Syntax-Fehler kann es eigentl. nicht sein, da der gleiche INSERT Befehl ohne Sonderzeichen einwandfrei funktioniert.
-
Das häufigste Problem sind nicht die Sonderzeichen, sondern dynamische SQL's die die Daten zusammenstellen:
insert into mytable (f1, f2, ...) values (123, 'xxx', ...)
Alphafelder sind genau dann das Problem, wenn sie selber wieder Hochkomma enthalten !
In diesem Fall sind die Hochkommata nämlich zu verdoppeln !!!
Besser ist es immer mit sogenannten Parametern zu arbeiten:
insert into mytable (f1, f2, ...) values (?, ?, ...)
Jedem Parameter kann dann ein Wert zugewiesen werden und per Execute ausgeführt werden.
Ein gravierender Vorteil: Die Syntax wird nur 1 Mal geprüft. Die Feldinhalten werden dann sehr schnell übertragen.
Prüfe deine Zeicheninhalte auf Hochkomma !
-
Es waren nur 2 Test-Statements, das Erste lautetet:
INSERT INTO BIBLIOTHEK.TABLE (Nummer,Textfeld) VALUES (123456,'ABC')
und funktionierte. Das Zweite:
INSERT INTO BIBLIOTHEK.TABLE (Nummer,Textfeld) VALUES (123456,'ÄÖÜ')
und lief nicht. Komisch, komisch ...
-
In irgendeiner Form scheint das 'ÄÖÜ' nicht so auf der AS/400 anzukommen. Sonst würde kein Syntaxfehler (SQL0104) gemeldet werden.
Es scheint ein Problem der Hex-Darstellung zu sein. Nun kenne ich mich mit Linux nicht aus, aber versuch mal anstelle von Konstanten im Insert ParameterMarker "?" zu verwenden.
Parametermarker werden mit entsprechenden SQL-API's gebunden:
SQLBindParameter bzw. SQLPutParameter o.ä.
Du kannst auch auf der AS/400 mal einen IP-Trace aufsetzen um zu sehen, was denn tatsächlich übertragen wird:
TRCTCPAPP APP(*DATABASE) SET(*ON) RMTNETADR(*INET '192.186.1.5')
mit TRCTCPAPP APP(*DATABASE) SET(*OFF) wird dann ein Protokoll ausgegeben.
-
ODBC Sonderzeichen
Hallo,
vielleicht hilft dies:
Problem: A Linux® application using the iSeries ODBC driver for Linux® received a SQL0104 token not valid error. The error occurred only when the SQL statement contained literals that used characters outside the invariant character set.
The isql utility shipped with versions of unixODBC prior to June 2003 does not call the setlocale() function and may run into this problem.
Resolution: The Linux® ODBC driver is using the locale set up by the application to convert the SQL statement. If the application does not set up the locale in its main(), the default compiler "C" locale is used. This implies a client code page of 367 is used for some client conversions. Code page 367 does not support many characters outside the invariant character set. The main application must ensure the locale is set up properly.
#include <locale.h>
int main( int argc, char* argv)
{
setlocale( LC_ALL, "" ) ;
}
-
Danke für den Tipp, leider können wir den Eintrag nicht machen, da wir
das RPM-Packet direkt mit SUSE 9.2 installiert haben.
-
Link
Hallo,
vielleicht hilft Dir dieser Link:
http://www-1.ibm.com/servers/eserver...roperties.html
in dem Bereich "Translation properties" CCSID
Similar Threads
-
By Blaumeise in forum IBM i Hauptforum
Antworten: 2
Letzter Beitrag: 17-11-06, 12:19
-
By jjagi in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 07-07-06, 08:29
-
By Fondue in forum NEWSboard Server Software
Antworten: 0
Letzter Beitrag: 28-04-06, 19:40
-
By ralfmh in forum Archiv NEWSboard Events
Antworten: 1
Letzter Beitrag: 07-10-04, 11:17
-
By HerbertH in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 27-05-04, 13:10
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks