-
Wofür brauchst Du denn einen Union?
Welche Informationen willst Du denn auslesen?
Das folgende Beispiel bringt Dir sq und die Label, Werte und Namen von allen 6 Leveln zurück
Code:
Select *
From Xmltable('/trac'
Passing Xmlparse(Document YourSchema.Gblxmlvar)
Columns SQ VarChar(10) Path '@sq',
Label1 VarChar(25) Path './esr/fis/tag/@label',
Value1 VarChar(125) Path './esr/fis/tag/@value',
Name1 VarChar(25) Path './esr/fis/tag/@name',
Label2 VarChar(25) Path './esr/fis/tag/tag/@label',
Value2 VarChar(125) Path './esr/fis/tag/tag/@value',
Name2 VarChar(25) Path './esr/fis/tag/tag/@name',
Label3 VarChar(25) Path './esr/fis/tag/tag/tag/@label',
Value3 VarChar(125) Path './esr/fis/tag/tag/tag/@value',
Name3 VarChar(25) Path './esr/fis/tag/tag/tag/@name',
Label4 VarChar(25) Path './esr/fis/tag/tag/tag/tag/@label',
Value4 VarChar(125) Path './esr/fis/tag/tag/tag/tag/@value',
Name4 VarChar(25) Path './esr/fis/tag/tag/tag/tag/@name',
Label5 VarChar(25) Path './esr/fis/tag/tag/tag/tag/tag/@label',
Value5 VarChar(125) Path './esr/fis/tag/tag/tag/tag/tag/@value',
Name5 VarChar(25) Path './esr/fis/tag/tag/tag/tag/tag/@name',
Label6 VarChar(25) Path './esr/fis/tag/tag/tag/tag/tag/tag/@label',
Value6 VarChar(125) Path './esr/fis/tag/tag/tag/tag/tag/tag/@value',
Name6 VarChar(25) Path './esr/fis/tag/tag/tag/tag/tag/tag/@name')
As Result;
Birgitta
-
Den Union benötige ich dann, wenn ich die Werte zeilenweise verarbeiten will.
Von den Zeiten der Pseudoarrays (sprich Denormalisierung) sind wir doch eigentlich schon weg;-).
Allerdings könnte man nun deinen SQL mit dem hier schon mal veröffentlichten
select ...
cross join lateral (
) as tabelle(...)
ergänzen um doch wieder Zeilenzu bekommen.
-
@Brigitta Ich habe das genauso gemacht. Es werden aber 0 Sätze ausgewählt.
Hier die Testumgebung. Bei den XML Daten habe ich den Anfang durch eine # ersetzt sonst kann ich das nicht posten.
create or replace variable mylib.xml_var1 varchar(10000) ccsid 1208;
values mylib.xml_var1;
set mylib.xml_var1 =
'#TraC SQ="164">
#Result RC="OK">
#UserMessage>Summe falsch: 528.9#/UserMessage>
#Warning>w-#T_DIFF 8.50 PayA .Amt-ESR.T#/Warning>
#/Result>
#ESR D="2021-03-23T13:42:23" TN="900000041"/>
#Fis TID="16">
#Code>V0;7831130;Kassenbeleg-V1;Beleg^528.90_0.00_0.00_0.00_0.00^537.40:Bar;16; 9;2021-03-23T12:42:23.000Z;2021-03-23T12:42:23.000Z;ecdsa-plain-SHA256;unixTime;O9q2KbD0LlUrsLPlXl8gv9hOXwB829VM7I Lhr6e2rFFgyil5VP7IAupwVcuExDh0q1Gk5pBapdEUY19z42IX LeEVVbX18w==;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
#Tag Label="TrNr:" Value="16" Name="FN"/>
#Tag Label="Beg.:" Value="2021-03-23 13:42:23" Name="StartD"/>
#Tag Label="Ende:" Value="2021-03-23 13:42:23" Name="FinishD"/>
#Tag Label="TSE :" Value="0123456789abcdef0123456789abcdef0123456789abcdef01 23456789abcdef" Name="Serial"/>
#Tag Label="SigZ:" Value="9" Name="SignCnt"/>
#Tag Label="Sign:" Value="O9q2KbD0LlUrsLPlXl8gv9hOXwB829VM7ILhr6e2rFFgyil5VP 7IAupwVcuExDh0q1Gk5pBapdEUY19z42IXLeEVVbX18w==" Name="Sign"/>
#/Fis>
#/TraC>';
Select *
From Xmltable('/trac'
Passing Xmlparse(Document mylib.xml_var1)
Columns SQ VarChar(10) Path '@sq',
Label1 VarChar(25) Path './esr/fis/tag/@label',
Value1 VarChar(125) Path './esr/fis/tag/@value',
Name1 VarChar(25) Path './esr/fis/tag/@name',
Label2 VarChar(25) Path './esr/fis/tag/tag/@label',
Value2 VarChar(125) Path './esr/fis/tag/tag/@value',
Name2 VarChar(25) Path './esr/fis/tag/tag/@name',
Label3 VarChar(25) Path './esr/fis/tag/tag/tag/@label',
Value3 VarChar(125) Path './esr/fis/tag/tag/tag/@value',
Name3 VarChar(25) Path './esr/fis/tag/tag/tag/@name',
Label4 VarChar(25) Path './esr/fis/tag/tag/tag/tag/@label',
Value4 VarChar(125) Path './esr/fis/tag/tag/tag/tag/@value',
Name4 VarChar(25) Path './esr/fis/tag/tag/tag/tag/@name',
Label5 VarChar(25) Path './esr/fis/tag/tag/tag/tag/tag/@label',
Value5 VarChar(125) Path './esr/fis/tag/tag/tag/tag/tag/@value',
Name5 VarChar(25) Path './esr/fis/tag/tag/tag/tag/tag/@name',
Label6 VarChar(25) Path './esr/fis/tag/tag/tag/tag/tag/tag/@label',
Value6 VarChar(125) Path './esr/fis/tag/tag/tag/tag/tag/tag/@value',
Name6 VarChar(25) Path './esr/fis/tag/tag/tag/tag/tag/tag/@name')
As Result;
select mylib.xml_var1 From SYSIBM.SYSDUMMY1
-
@Fuerchau. Wie würde das mit dem CROSS JOIN LATERAL in meinem Bsp. aussehen ? Brauche ich dann keine Union mehr?
-
Beim XPath achte auf Groß/Klein Schreibung.
-
Danke! Das habe ich auch schon gemerkt.
Kann mir einer sagen wie ich XML hier ins Forum posten kann? Wenn ich das mache werden die XML Daten nach dem Post entfernt.
-
dafür gibt es doch die möglichkeit Code zu setzen
Du musst nur erst auf erweitert klicken
Das Notwendige steht über dem technisch machbaren.
(klingt komisch, funktioniert aber!)
-
Code:
'
Summe falsch: 528.9
w-#T_DIFF 8.50 PayA[].Amt-ESR.T
V0;7831130;Kassenbeleg-V1;Beleg^528.90_0.00_0.00_0.00_0.00^537.40:Bar;16;9;2021-03-23T12:42:23.000Z;2021-03-23T12:42:23.000Z;ecdsa-plain-SHA256;unixTime;O9q2KbD0LlUrsLPlXl8gv9hOXwB829VM7ILhr6e2rFFgyil5VP7IAupwVcuExDh0q1Gk5pBapdEUY19z42IXLeEVVbX18w==;AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA==
';
-
Bei CODE nimmt er auch alle XML Tag raus
-
Cross Lateral findest du hier:
http://newsolutions.de/forum-systemi...=cross+lateral
Ich habe das bei mir inzwischen schon verwendet, da im XPPS (Infor) viele Tabellen mit Pseudo-Arrays vorhanden sind. Die AS/400, IBM i, optimiert dies grandios.
-
Mir ist leider nicht ganz klar wie mir das bei meinen XML String helfen kann. Könntest du bitte einen kleinen Bsp. Code bezogen auf meinen xml String senden. Besten Dank.
-
Ich habe das Bsp. mal etwas vereinfacht. Mit nur einem TAG funktioniert es. Bei zwei TAG gib es eine Fehlermeldung aus der ich aber nicht schlau werden.

Code:
create or replace variable mylib.xml_var varchar(10000) ccsid 1208;
values mylib.xml_var;
set mylib.xml_var =
'#TraC> #Fis>
#Tag Label="Label1" Value="16" Name="FN"/>
#/Fis>
#/TraC>
';
SELECT *
FROM XMLTABLE('/TraC'
PASSING XMLPARSE(
DOCUMENT mylib.xml_var
)
COLUMNS
Label1 varchar(256) PATH './Fis/Tag/@Label'
,Value1 varchar(256) PATH './Fis/Tag/@Value'
,Name1 varchar(256) PATH './Fis/Tag/@Name'
,Label2 varchar(256) PATH './Fis/Tag/Tag/@Label'
,Value2 varchar(256) PATH './Fis/Tag/Tag/@Value'
,Name2 varchar(256) PATH './Fis/Tag/Tag/@Name'
) AS RESULT;
select mylib.xml_var from sysibm.sysdummy1
Similar Threads
-
By oulbrich in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 22-03-21, 14:37
-
By dholtmann in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 30-03-18, 14:15
-
By WoessnerA in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 09-03-03, 16:15
-
By PS in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 12-10-01, 11:16
-
By K_Tippi in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 20-02-01, 14:58
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks