Anmelden

View Full Version : Datei mit CLOB Feld in IFS schreiben - Daten kommen nicht vollständig an



msost
16-03-17, 11:54
Moin moin,

ich und CLOB's. Zwei Welten prallen aufeinander...

Zunächst nochmal vielen Dank an Euch für die Hilfe beim Erstellen von Dateien mit CLOB-Feldern per embedded SQL. Läuft alles.

Jetzt habe ich mehrere Dateien, die in einer Bibliothek stehen und in einem Clob-Feld jeweils mehrere XML-Elemente enthalten. Die müssten jetzt nochmal eben auch ins IFS gestellt werden.

Hab dann gedacht: Ist doch easy, einfach genauso machen als wenn ich eine physische Datei ohne Clob-Feld selektiere und rein ins IFS.

Das Ergebnis hat mich dann erstaunt: Es wird offensichtlich immer nur das erste XML-Element in die Zieldatei gestellt. Oder sehe ich den Rest nur nicht?

Was hab ich gemacht?

DCL-S mit SQLTYPE(XML_CLOB_FILE) (hab auch mit CLOB_FILE probiert, Ergebnis war gleich)

Dann SQL Select CLOBFELD into :XMLDOC from LIBR/CLOBFILE

Ich hätte erwartet, das der gesamte Inhalt des Clob-Felds aus LIBR/CLOBFILE (also alle 350 XML-Elemente) im CLOB File der IFS-Datei landet. Ich sehe aber immer nur das erste.

Any Ideas?

Fuerchau
16-03-17, 12:55
Ja: schau mal hier:
http://www.mcpressonline.com/programming/sql/techtip-using-sql-with-ifs-text-files-part-1

Du musst dann nur die Richtung wechseln, also CLOBtoFile.
Durch die UDF kannst du das dann sehr elegant überall einbauen (RUNSQL, STRQMQRY, ...).

msost
16-03-17, 13:34
Danke. Einen Clob-Locator zu verwenden scheint Sinn zu machen. Schade das die Links zu dem Code des Artikels nicht (mehr) funktionieren. Aber ich probier mal rum.

Fuerchau
16-03-17, 13:46
Im wesentlichen liegt es ja am:

<tt>exec sql Set :ClobData=:ClobFile</tt>;

Willst du in die datei schreiben, so sollte das umgedreht gehen<tt>.

exec sql Set :Clob<tt>File</tt>=:Clob</tt>Data;

Hier dann noch die Funktion/Prozedur rumbauen, das schaffst du schon.