Anmelden

View Full Version : SQL XML



Seiten : 1 2 [3]

BenderD
12-01-15, 10:38
Nun ist die Definition der Variable auch klar.
Die Beschreibung im Netz habe ich auch gefunden.
Im neuesten V7R2 (oder V7R1) PDF-Handbuch finde ich nichts dazu.
Auch ansonsten scheint es keine gescheite Beschreibung für zu geben.

Gibt es irgendwo einen Link für das Ganze?
Wo ist das denn tatsächlich mal offiziell dokumentiert?
Oder gibt's das nur für Softwarehäuser mit IBM-Ausbildern:)?

Im Übrigen findet man obiges Beispiel auch wieder hier im Forum, 2012 von Birgitta:
http://newsolutions.de/forum-systemi-as400-i5-iseries/threads/17892-Variable-Feldname/page2

... da gab es schon unter V4R5 (oder so) SQLTYPE(CLOBFILE), die haben nur noch nicht geschafft dieses Feature zu dokumentieren und/oder ordentlich zu implementieren. Bei folgendem Snippet kriegt der Compiler schon die Freck:
d yours s sqltype(clob_file)
d yours_name s 10
Ansonsten kann man ja auch ausprobieren was man da so alles in die Felder der generierten DS reinschreiben kann und was das so macht, immer in der Hoffnung, dass das dann im nächsten Release noch genauso ist.

D*B

PS: seit wann gibt es eigentlich qualified?

AG1965_2
12-01-15, 11:33
QUALIFIED für DS seit V5R1, für Record Formate seit V6R1.
(Im RPG-Handbuch nach dem Inhaltsverzeichnis unter "What's new" - ich liebe diese Aufstellung.)

mk
12-01-15, 15:24
Hallo,

mit Birgittas Snippet habe ich die erste Hürde genommen.

Jetzt muss ich aber eine XML Datei mit einer Gruppe aufbauen.

Also ganz simpel:
-Bestellung
.. Artikel
.. Artikel
.. Artikel
-Bestellung
-Bestellung
.. Artikel
.. Artikel
.. Artikel
-Bestellung
usw...


Dazu habe ich folgendes Programm



DCL-S XmlDocL SQLTYPE(XML_CLOB_FILE);
clear XmlDocL ;

XmlDocL_Name = '/asmtool/test/aXmlDocList.xml';
XmlDocL_NL = %len(%trim(XmlDocL_Name));
XmlDocL_FO = SQFOVR;

Exec SQL
select XMLDOCUMENT
( XMLELEMENT
(NAME "Bestellungen",
XMLATTRIBUTES( eb.bbstnr AS "BSTNR"),
xmlagg (
xmlelement( name "BestellRow" ,
xmlelement( name "Bestellnr" , eb.bbstnr) ,
xmlelement( name "Artikel" , eb.bartnr) ,
xmlelement( name "DAN" , az.azsoar) )
order by eb.bartnr )

) )

Into :XmlDocL
from ....


Im OpsNav sehe ich das für mehrere Bestellungen auch Artikel mehrfach vorhanden sind.

Allerdings wird in der IFS Datei nur eine einfach Bestellung
als XML ausgegeben.

Weiß jemand wie man eine solche Gruppe
mit SQL erzeugen kann ?

Gruß
Michael

mk
12-01-15, 15:30
... da gab es schon unter V4R5 (oder so) SQLTYPE(CLOBFILE), die haben nur noch nicht geschafft dieses Feature zu dokumentieren und/oder ordentlich zu implementieren. Bei folgendem Snippet kriegt der Compiler schon die Freck:
d yours s sqltype(clob_file)
d yours_name s 10
Ansonsten kann man ja auch ausprobieren was man da so alles in die Felder der generierten DS reinschreiben kann und was das so macht, immer in der Hoffnung, dass das dann im nächsten Release noch genauso ist.

D*B

PS: seit wann gibt es eigentlich qualified?


Hier die generierte DS


EVAL xmldoc
XMLDOC_NL OF XMLDOC = 0
XMLDOC_DL OF XMLDOC = 0
XMLDOC_FO OF XMLDOC = 0
XMLDOC_NAME OF XMLDOC =

BenderD
12-01-15, 16:45
Hier die generierte DS


EVAL xmldoc
XMLDOC_NL OF XMLDOC = 0
XMLDOC_DL OF XMLDOC = 0
XMLDOC_FO OF XMLDOC = 0
XMLDOC_NAME OF XMLDOC =

... was soll mir das jetzt sagen?
Das sieht doch alles sehr nach Kraut und Rüben aus. Da gibt es ein Schlüsselwort SQLTYPE, das in der RPG Reference nicht beschrieben wird und in eine Datenstruktur aufgelöst wird, die Felder hat, die nirgends beschrieben sind. Für diese Felder werden Namen verwendet, die nicht dem Schema reservierter Namen von SQL entsprechen und damit es wirklich knallt, nimmt man dann keine qualified Datenstruktur. Dann werden noch Konstanten generiert, deren Verwendung auch nicht dokumentiert ist. Die XML UDFS lehnen sich im Namen an eine Erweiterung des SQL Standards an, was sie machen ist aber in der SQL Reference nicht beschrieben.
Früher hat man sowas Murks genannt!!!

D*B

Robi
12-01-15, 16:55
Das sieht doch alles sehr nach Kraut und Rüben aus. Da gibt es ein Schlüsselwort SQLTYPE, das in der RPG Reference nicht beschrieben wird und in eine Datenstruktur aufgelöst wird, die Felder hat, die nirgends beschrieben sind. Für diese Felder werden Namen verwendet, die nicht dem Schema reservierter Namen von SQL entsprechen und damit es wirklich knallt, nimmt man dann keine qualified Datenstruktur. Dann werden noch Konstanten generiert, deren Verwendung auch nicht dokumentiert ist. Die XML UDFS lehnen sich im Namen an eine Erweiterung des SQL Standards an, was sie machen ist aber in der SQL Reference nicht beschrieben.
Früher hat man sowas Murks genannt!!!


Hatte ich erwähnt was wir uns entschieden haben diese tolle Funktion nur für sehr einfache XML zu verwenden. Meine Source hab ich im Juni 2011 aus einem amerikanischen Forum abgeschrieben.
(Ja, MIT der DS :D ). Dann haben wir voller Begeisterung 2 Tage gesucht und rumprobiert. Um uns dann für die aufwendigere aber mögliche Variante zu entscheiden!
Wer ne brauchbare Doku oder ein verschachteltes BSP findet, immer gerne! (habe lange nich danach gesucht)
Sonst gilt was Dieter sagt: Früher hat man sowas Murks genannt!!!

Robi