Hallo,
ich habe mir einen kleinen Test zusammengeschustert:
Nachfolgend das SQLRPGLE - in den Compilersettings wird der Cursor mit *ENDMOD geschlossen:
Und das Java-Programm:Code:* CREATE PROCEDURE PGM/SRL_TSTX6(IN MANDANT CHAR ( 3)) * RESULT SETS 1 NOT * DETERMINISTIC READS SQL DATA EXTERNAL NAME PGM/SRL_TSTX6 * PARAMETER STYLE GENERAL H DFTACTGRP(*NO) ACTGRP(*CALLER) d aDate s d datFmt(*ISO) inz(D'2010-12-07') d dayNumber s 10i 0 d dayName s 10a /free exec SQL Set Option Commit=*NONE, Naming=*SYS; exec SQL declare global temporary table temp_daynames (day_number integer, day_Name varchar (9)) ; exec SQL insert into temp_daynames values(1, 'Monday'), (2, 'Tuesday'), (3, 'Wednesday'), (4, 'Thursday'), (5, 'Friday'), ('6', 'Saturday'), (7, 'Sunday'); exec SQL values dayOfWeek_ISO(:aDate) into : dayNumber ; EXEC SQL Declare CustCsr cursor for SELECT * FROM temp_daynames; EXEC SQL Open CustCsr; EXEC SQL SET RESULT SETS for Return to Client Cursor CustCsr; return; C EVAL *INLR = *ON
Nur leider kommt es zu einer Exception (java.sql.SQLException: Cursor state not valid.).Code:@Test public void temporaryTable() { try { CallableStatement callableStmt = AS400_Anmeldung.getConnection().prepareCall("CALL PGM.SRL_TSTX6(?)"); callableStmt.setString(1, "100"); ResultSet rSet = callableStmt.executeQuery(); while (rSet.next()) { String dayName = rSet.getString(rSet.findColumn("day_Name")); System.out.println(dayName); } } catch (final Exception ex) { System.out.println(ex); } }
Wo ist der Haken? Habe ich etwas übersehen?
Gruß und schönes Wochenende
BM
![[NEWSboard IBMi Forum]](images/duke/nblogo.gif)



Mit Zitat antworten
Bookmarks