jdbc - java.sql.SQLSyntaxErrorException: ORA-01722: invalid number while resultSet.next() on refcursor and I don't understand why? -
i have issue eating me hours , i'm unable find exact reason why happening? java.sql.sqlsyntaxerrorexception: ora-01722: invalid number while iterating on refcursor out parameter of stored procedure using resultset.next(). bothering me is, occurs when there no result iterate over.
the signature of stored procedure:
procedure get_prog_srch_by_criteria (p_orgid in number, p_mepid in number, p_prog_prg_id in number, p_pcom_enrol_date in varchar2, p_pcom_enrol_year_from in varchar2, p_pcom_enrol_year_to in varchar2, p_pcom_non_prtcm_date in varchar2, p_pcom_completion_date in varchar2, p_pcom_status_code in varchar2, p_sys_cursor out sys_refcursor ); java code snippet:
statement = connection.preparecall("call prog_tools.get_prog_srch_by_criteria(?,?,?,?,?,?,?,?,?,?)"); statement.setlong(1, searchcriteria.getorganizationid()); /* * code set other 8 parameters comes here */ statement.registeroutparameter(10, oracle.jdbc.oracletypes.cursor); statement.executequery(); resultset = (resultset) statement.getobject(10); /* * code initialize necessary value objects comes here */ while (resultset.next()) { /* * code values resultset using column named index * , initialize value objects * few example: */ datavo = new datavo(); datavo.setpcomid(result.getlong("pcom_id")); datavo.setpersonid(result.getlong("person_id")); . . programlist.add(datavo); } issue: if call get_prog_srch_by_criteria sending null in 3rd parameter, expected result. if call get_prog_srch_by_criteria sending actual value in 3rd parameter, java.sql.sqlsyntaxerrorexception: ora-01722: invalid number on line
while (resultset.next()) {
exception trace:
java.sql.sqlsyntaxerrorexception: ora-01722: invalid number @ oracle.jdbc.driver.sqlstatemapping.newsqlexception(sqlstatemapping.java:91) @ oracle.jdbc.driver.databaseerror.newsqlexception(databaseerror.java:112) @ oracle.jdbc.driver.databaseerror.throwsqlexception(databaseerror.java:173) @ oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:455) @ oracle.jdbc.driver.t4cttioer.processerror(t4cttioer.java:413) @ oracle.jdbc.driver.t4c8oall.receive(t4c8oall.java:1030) @ oracle.jdbc.driver.t4cstatement.dooall8(t4cstatement.java:183) @ oracle.jdbc.driver.t4cstatement.fetch(t4cstatement.java:1000) @ oracle.jdbc.driver.oracleresultsetimpl.close_or_fetch_from_next(oracleresultsetimpl.java:314) @ oracle.jdbc.driver.oracleresultsetimpl.next(oracleresultsetimpl.java:228) @ weblogic.jdbc.wrapper.resultset_oracle_jdbc_driver_oracleresultsetimpl.next(unknown source) @ org.app.ejb.program.dao.progdao.searchprogenrollees(progdao.java:136) i checked procedure testing directly using sqldeveloper tools sending same parameters above java code used. worked absolutely fine.
i tried ojdbc14 , ojdbc6 drivers, no luck.
i have no clue why occurs on resultset.next(). if 3rd parameter null don't exception , flow works expected.
any here appreciated.
technologies used: - java 6, ejb - oracle 11g database r2 (11.2.0.3) - oracle weblogic 10g (10.3.0)
perhaps need call next() on containing resultset first?
statement.registeroutparameter(10, oracle.jdbc.oracletypes.cursor); resultset rs1 = statement.executequery(); rs1.next(); resultset = (resultset) statement.getobject(10);
Comments
Post a Comment