... bei Kompatibilitätsproblemen von Datentypen hilft ein Cast, wobei die Syntax für die remote Datenbank eingehalten werden muss (=> Blick in die Oracle Doku).
VARGRAPHIC kennt Oracle nicht. Je nach Ziel muss in Oracle der Typ NVARCHAR oder VARCHAR definiert sein. D.h., dass du in deinem Programm die Felder in den Typ C (UCS2) für NVARCHAR oder eben normal Alpha konvertieren musst.
Hallo,
viellen Dank
Das stimmt wenn ich direkt in Datenbank rein schaue sind die Felder Nvarchar.
Wenn ich ich allerdings über das Tool von Herr Bender(JVAGATE) über STRSQL (i5) schaue und im select F4 drücke, werden dieser als VARGRAPHIC dargestellt.
Ich habe bereits so Probiert:
cmd = 'Select '
+ 'Feld1, ' //Feld ist numeric
+ 'Feld2, ' //Feld ist numeric
// + 'name ' //Feld ist nvarchar oder unter JVAGATE vargraphic
//+ 'CAST(name as CHAR(512) ccsid 273) ' //so probiert
+ 'CAST(CAST(name AS VARCHAR(512)'
+ ' CCSID 13488) VARCHAR(512) CCSID 1141) ' //so auch
+ 'from DBO.address ' ;
oder direkt bei fetch into ausgegeben in das Feld ucs2data siehe unten <- ohne erfolg
d cvtdata DS
D ucs2sapdata 32766A varying
D ucs2data 16383C varying overlay(ucs2sapdata)
Das Problem ist ein anderes.
Oracle führt N[VAR]CHAR in UTF-8!
Allerdings liefert der Oracle-Treiber diese Felder wieder vom Typ String.
Zusätzlich kannst du natürlich im SQL keine AS/400-Funktionen angeben, da dieser SQL doch an Oracle geht und eigene Funktionen hat!
Also lass mal alle Casts weg, mach deinen "Select F1, F2, ...." und definiere deine Zielvariablen für Zeichenfelder einfach vom Typ C.
Zusätzlich solltest du für alle Felder auch NULL-Anzeiger vorhalten, denn NULL ist i.d.R. bei Oracle erlaubt.
Zu beachten ist auch der Typ Date in Oracle der immer vom Typ DateTime ist!
Diese Felder solltest du mittles TO_CHAR(Fx, 'Format') umwandeln.
Dann kannst du diese per %DATE, %TIME oder %TIMESTAMP wieder umwandeln. https://docs.oracle.com/cd/B19306_01...nctions180.htm
... ich bräuchte da schon das komplette log mit loglevel debug, um zu sehen was da klemmt- Am besten ein minimalisiertes Beispiel, mit kompletter Beschreibung, was du da machst, als Zip an meine Mailadresse.
... DRDA Protokollfehler deutet auf einen Bug im ArdGate.
- hast Du die neueste Version?
- probier mal einen cast nach nchar oder char (cast (name as char(xxx)), wobei Oracle da genug Länge braucht - gegebenen Falls noch substring vor dem cast.
Mit dem einfachen Cast ohne CCSID funktioniert schon -> select CAST(name as nCHAR(512)) from... Mit dieser lösung werde ich wahrscheinlich keine kyrillicher Sprache bekommen...(dafür UCS2 Felder..)
Mit Null-Anzeiger habe ich hier noch kein Problem, da ich nur 1 Feld und 1 Satz ausgewählt habe und dieser war kein NULL.
Wie ich hier mit NULL-Anzeiger umgehen muss, ist mir klar...
Ich habe die Version --> ArdGate Version: 2016-09-01
Sollte ich es Updaten ??
Danke auch für den Beispiel, hier gibt es aber keine Umsetztung auf UCS2...
Bookmarks