Ich habe eine Routine, die aus einer IFS-Datei ein SQL Statement liest. Dies ist ein Select, der mit XMLDOCUMENT und XMLROW eine XML-Struktur aufbaut. Das Ergebnis sind mehrere Rows. Diese sollen in eine IFS-Datei weggeschrieben werden. Funktioniert im Grundsatz auch, es kommt aber nur ein Satz in der Datei an. Baue ich keine Schleife um den Fetch, dann ist es der erste, mit Do-Schleife der letzte. Ich seh also zwar was passiert, aber meinen Fehler nicht...
Tips welcome!
Code:
// RunSQL Subroutine
// -----------------
begsr RunSQL;
// Prepare SQL from SQL-String
EXEC SQL
PREPARE selectstm FROM :sqlstring;
// Declare Cursor for prepared SQL
EXEC SQL
DECLARE INXML CURSOR FOR selectstm;
// Open Cursor
EXEC SQL
OPEN INXML;
dow sqlcod = 0;
// Fetch SQL Data into XML-Clob Locator
EXEC SQL
FETCH NEXT FROM INXML
INTO :IXMLLoc;
if sqlcod <> 0;
leave;
endif;
// Store Data in Host-Variable
EXEC SQL
SET :IXMLDta = :IXMLLoc;
// Store Data in IFS-File
EXEC SQL
SET :IXMLDoc = :IXMLLoc;
enddo;
// Close SQL-Cursor
EXEC SQL
CLOSE INXML;
// Free Clob-Locator Space
EXEC SQL
FREE LOCATOR :IXMLLoc;
endsr;
Bookmarks