Anmelden

View Full Version : Oracle Sql zugriff



Robi
17-03-16, 14:08
Moin zusammen,

Nachdem Ihr meine letzte Frage (http://newsolutions.de/forum-systemi-as400-i5-iseries/threads/20182-sqlpkg-via-JDBC-und-Berechtigung) mit 'nimm den orginal Treiber' so Funktionell beantwortet habt, komme ich nun mit einem weiteren Problem.

Die 'Holende' Seite kann die Daten ansehen.
Bei dem Versuch Sätze in eine eigene Tabelle zu kopieren, bekommen die diesen Fehler:


Fehler
ODI-1217: Session Copy of Stage_STG_PORTFOLIO_XXX_Physical_SESS (90811)
fails with return code ODI-1298.
ODI-1226: Step Physical_STEP fails after 1 attempt(s).
ODI-1227: Task SERIAL-MAP_MAIN- fails on the source connection <Empty
Value>.
ODI-1298: Serial task "SERIAL-MAP_MAIN- (40)" failed because child task
"SERIAL-EU-XXXYYYTESTUMGEBUNG_UNIT (50)" is in error.
ODI-1298: Serial task "SERIAL-EU-XXXYYYTESTUMGEBUNG_UNIT (50)" failed
because child task "Load data-LKM SQL to Oracle- (80)" is in error.
ODI-1227: Task Load data-LKM SQL to Oracle- fails on the source connection
XXX YYY Testumgebung.
Caused By: com.ibm.as400.access.AS400JDBCSQLSyntaxErrorExcept ion: [SQL0206]
Spalte oder globale Variable $4ID nicht gefunden.

Dazu hat mir der zuständige Entwickler noch das geschickt

Target Code


insert into DWH_ODI.c$_POOLL299
(
A4ID
)
values
(
:A4ID
)



Source Code


select
POOLL299."$4ID" A4ID
from TESTF_XXXX.$POOLL299 APOOLL299
where (1=1)



Sieht von euch Jemand was die Ursache ist?

Die Datei (auf der iSeries) gibt es (LF)
Das Feld $4ID gibt es in der Datei.
Die Datei ist gefüllt
Der User hat Obj Verwendungsrechte und Daten Lese/Upd/Ausführungs Rechte

Danke!
Robi

Fuerchau
17-03-16, 14:52
Warum wird dann beim Insert A4ID statt $4ID verwendet?
Ansonsten sollten Sonderzeichen in Feld/Tabellennamen vermieden werden.

Robi
17-03-16, 15:08
Das habe ich auch gefragt.
Die Erklärung war, das der Source Code auf der iSeries läuft und dort mit dem

POOLL299."$4ID" A4ID
das Feld umbenannt wird.

Und auf der Qracle Kiste ist dann das A4ID gültig!

Die Statements werden wohl von einem Tool generiert, soweit ich das verstanden habe.

Fuerchau
17-03-16, 15:30
Dann sollen die ihr Tool an passen.
Wenn ich einen "select $4ID as A4ID .." generiere kann ich nicht erwarten dann das A4ID zu finden.
Frag mal nach wenn ich

select ... $4ID as "Lieschen Müller" ...

kodiere. Erwarten die dann ernsthaft "Lieschen Müller" als Feldname für einen Insert/Update?

BenderD
17-03-16, 15:38
... die Fehlermeldung ist allerdings, dass $4ID nicht gefunden wird, was irgendwie nicht zur Beschreibung des Täters passt. Generell sollte man natürlich keine Zeichen des varianten Teils des EBCDIC verwenden und spätestens wenn man remote zugreifen will eine View drüberlegen,m die das umbenennt.

D*B

Fuerchau
17-03-16, 16:01
Es war schon immer ein Problem, in SQL Felder mit $ oder # zu benennen.
In RPG mit RLA ist das ja egal, aber SQL arbeitet auch bei dem SQL-Statement selber mit einer CCSID.
Und wenn die dann nicht passt weil sich (wie immer) keiner drum kümmert....