Robis Quelle ist schon korrekt.
Er hat lediglich vergessen die D-Bestimmungen, sprich die Definition der XML_CLOB_File mitzukopieren.
Das XML-Dokument wird direkt mit dem SELECT ... INTO in das IFS geschrieben.
Wird eine XML_CLOB_FILE definiert wird das XML-Dokument in die in der der Option SQL_XML_DATA_CCSID in der Abfrage-Options-Datei QAQQINI angegebene CCSID konvertiert. Default-Wert der Option ist 1208 (=UTF-8)
Code:
D MyXMLDOC S SQLTYPE(XML_CLOB_FILE)
C/EXEC SQL SET OPTION COMMIT=*NONE, DATFMT=*ISO, TIMFMT=*ISO,
C+ NAMING=*SYS, CLOSQLCSR=*ENDACTGRP
C/END-EXEC
/FREE
CLEAR MYXMLDOC;
MYXMLDOC_NAME = '/HOME/RJ/MYXMLDOC.XML';
MYXMLDOC_NL = %LEN(%TRIM(MYXMLDOC_NAME));
MYXMLDOC_FO = SQFOVR; //REPLACE IF EXISTS
EXEC SQL
SELECT XMLDOCUMENT
(XMLGROUP(ADR006 AS "D_C",
ADR007 AS "NUMMER",
ADR009 AS "INTERN-NAME",
ADR018 AS "STREET",
ADR015 AS "ZIPCODE",
ADR020 AS "CITY"
ORDER BY ADR015 DESC, ADR009
OPTION ROW "KUNDEN"
ROOT "ADRESSEN"))
INTO :MYXMLDOC
FROM ADRM1;
*INLR = *ON;
/END-FREE
Das Ganze klappt natürlich auf für komplexere XML-Dokumente.
Übrigens mit File-Reference-Variablen kann man mit embedded SQL direkt ins IFS schreiben und natürlich auch aus dem IFS lesen.
Birgitta
Bookmarks