-
Probleme mit SQL und xmlserialize
Hallo zusammen
Ich sollte ein SQL erstellen, in welchem sich der Output aus dem Inhalt von verschiedenen Datensätzen zusammensetzt.
Anbei ein "einfaches" Beispiel:
SELECT
substr( xmlserialize( xmlagg( xmltext( concat( ' / ', char(gpaid) ) ) )
as CLOB(1024) ), 4)
from ripgpa
--> Ergibt den Output = SYSDAT / LIBDTA / JRN
Mein Problem ist nun folgendes:
wenn ich dieses SQL im iNavigator laufen lasse, funktioniert es. Aber leider nicht auf dem IBM-Green-Screen (STRSQL via IBM i-Hauptmenu). Die Fehlermeldung lautet "Argument 1 der Funktion XMLTEXT ungültig."
Das SQL muss ich schlussendlich aus einem RPG aufrufen. Erfahrungsgemäss funktioniert das nicht, wenn das SQL auf dem Green-Screen nicht läuft. So auch aktuell, das RPG gibt einen Fehler zur Laufzeit aus: "Unerwarteter SQL-Code '-901' bei 'Prepare1 - Prepare SQLExtractV1' - 'CPF4204"
Hat jemand eine Idee?
Tritt auf in V7r1
Vielen Dank!
-
Dass das Statement nicht aus RPG läuft, wenn es im STRSQL nicht läuft ist nicht gesagt.
STRSQL ist "stabilized" also wird nicht mehr weiterentwickelt. Die letzten Erweiterungen sind soweit ich mich erinnere in Release V4R5 (oder die Größenordnung) hinzugekommen, während die letzten Neuerungen in den IBM i Navigator integriert wurden.
Die XML-Erweiterung in SQL wurde erst mit Release 7.1 eingeführt.
Birgitta
-
Danke für die schnelle Antwort.
D.h., dieses SQL kann im STRSQL gar nicht funktionieren?
Trotzdem, in RPG eingebunden funktioniert es leider nicht.
-
Wie sieht das SQL-Statement in Deinem RPG-Program aus und welchen SQLCODE (oder SQLSTATE) bekommst Du zurück?
Sofern Du den SQLCODE -901 (System-Fehler) zurückbekommen solltest, solltest Du prüfen lassen, ob Ihr alle PTFs für SQL und Datenbank installiert habt. Falls nicht nachinstallieren, wenn doch musst Du Dich an die IBM wenden, dann liegt ein Bug vor, der behoben werden muss.
Was willst Du überhaupt erreichen? Einfach nur irgendwelche Texte über mehrere Zeilen verknüpfen? In diesem Fall wäre vielleicht eine Rekursion einfacher.
Falls Ihr auf dem aktuellen Release Stand in 7.1 seid kannst Du mal folgendes probieren:
Datei: MyTable mit 2 Spalten MyId (laufender Zähler) und MyText (zu verknüpfende Texte).
Das folgende Beispiel setzt mit MyId 4 auf und verküpft die Texte (MyText) von MyId=4 bis einschließlich MyId=7:
Code:
Select Max(Substr(Sys_Connect_By_Path(MyText, '/'), 2))
From myTable
Start with MyId = 4
connect by NoCycle Prior MyId = MyId - 1
and MyId <= 7;
Hier ist auch noch zwei interesante Artikel von Kent Milligang zu dem Thema:
TechTip: Combining Multiple Row Values into a Single Row with SQL in DB2 for i
TechTip: More on Combining Multiple Row Values into a Single Row with SQL in DB2 for i
Birgitta
Similar Threads
-
By homerun in forum IBM i Hauptforum
Antworten: 6
Letzter Beitrag: 23-12-02, 22:26
-
By Der Gute in forum IBM i Hauptforum
Antworten: 10
Letzter Beitrag: 09-04-02, 15:36
-
By Günter Majewski in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 24-02-02, 17:03
-
By Flappes in forum IBM i Hauptforum
Antworten: 3
Letzter Beitrag: 30-08-01, 16:54
-
By Winni in forum IBM i Hauptforum
Antworten: 4
Letzter Beitrag: 30-03-01, 07:29
Tags for this Thread
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