Frag nochmal nach! Einen Cursor zurückgeben gibt es eigentlich nicht. Ich vermute es wird ein Result Set zurückgegeben.
Wenn das so ist, musst Du die folgenden Schritte machen:
1. Definiere in Deinem Programm einen Result-Set-Locator
Code:
DCL-S YourLocator SQLTYPE(RESULT_SET_LOCATOR);
2. Rufe Deine Stored Procedure auf
Code:
Exec SQL CALL StoredProcedure(:Parm1, ... :ParmN);
3. Weise die Result Sets den Result-Set-Locatoren mit ASSOCIATE zu
Code:
Exec SQL Assosiate Result Set Locator(:YourLocator)
With Specific Procedure SpecificProcedureName;
4. Deklariere einen Cursor für jeden Result-Set-Locator:
Code:
EXEC SQL Allocate yourCsrName Cursor For Result Set :YourLocator;
5. Der Rest ist wie bei jedem anderen Cursor, d.h. Fetch und wenn alles verarbeitet ist muss der Curosor (YourCsrName) geschlossen werden.
Code:
Exec SQL Fetch Next from YourCsrName into :DS;
Exec SQL Close YourCsrName;
Noch eine Anmerkung, Arbeit mit Lokatoren/Locators muss unter Commitment Control erfolgen!
Birgitta
Bookmarks