dholtmann
07-06-17, 15:51
Für recht einfach gehaltene XML geht beides relativ flott.
Lesen:
exec sql set option commit=*CHG;
exec sql declare Cursorname cursor for
select info_req.*
from xmltable('/Liste/Kunde'
passing xmlparse(document
get_xml_file('/Pfad'))
columns
FELD1 varchar(20) path 'BezeichnunginXML',
FELD2 decimal(11, 2) path 'BezZwei',
....
FELDN decimal(5, 2) path 'BezFeldN',
) info_req;
Dann den Cursor fetchen und gut ists.
XML erzeugen:
D MeineXMLDatei S SQLTYPE(XML_CLOB_FILE)
NAMING= *SYS, CLOSQLCSR= *ENDACTGRP;
** Zuerst legt man den Namen fest und gibt die Länge an.
MeineXMLDatei_name = Hier steht der Name;
MeineXMLDatei_nl = %len(%trim(Hier steht der Name));
MeineXMLDatei_fo = sqfovr;
** Im Anschluss weißt man die Dateifelder den XML-Feldern zu:
exec sql select xmldocument(xmlgroup(
Feld1 as "MeinErstesFeld",
Feld2 as "MeinFeld2",
...
FeldN as "MeinFeldN"
order by Feld1 asc
** Das option row legt den Container und den XML-internen Pfad fest
optionrow"Kunde"root"Liste"))
into :MeineXMLDatei
** Zuletzt gibt man die Dateien, aus denen gelesen werden soll an
from MeinePF where (Bedingung);
Klar kann man das Ganze noch komplexer machen, aber so hast du mal n Überblick
Lesen:
exec sql set option commit=*CHG;
exec sql declare Cursorname cursor for
select info_req.*
from xmltable('/Liste/Kunde'
passing xmlparse(document
get_xml_file('/Pfad'))
columns
FELD1 varchar(20) path 'BezeichnunginXML',
FELD2 decimal(11, 2) path 'BezZwei',
....
FELDN decimal(5, 2) path 'BezFeldN',
) info_req;
Dann den Cursor fetchen und gut ists.
XML erzeugen:
D MeineXMLDatei S SQLTYPE(XML_CLOB_FILE)
NAMING= *SYS, CLOSQLCSR= *ENDACTGRP;
** Zuerst legt man den Namen fest und gibt die Länge an.
MeineXMLDatei_name = Hier steht der Name;
MeineXMLDatei_nl = %len(%trim(Hier steht der Name));
MeineXMLDatei_fo = sqfovr;
** Im Anschluss weißt man die Dateifelder den XML-Feldern zu:
exec sql select xmldocument(xmlgroup(
Feld1 as "MeinErstesFeld",
Feld2 as "MeinFeld2",
...
FeldN as "MeinFeldN"
order by Feld1 asc
** Das option row legt den Container und den XML-internen Pfad fest
optionrow"Kunde"root"Liste"))
into :MeineXMLDatei
** Zuletzt gibt man die Dateien, aus denen gelesen werden soll an
from MeinePF where (Bedingung);
Klar kann man das Ganze noch komplexer machen, aber so hast du mal n Überblick