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

Popular posts from this blog

How to provide Authorization & Authentication using Asp.net, C#? -

toolbar - How to add link to user registration inside toobar in admin joomla 3 custom component -

How to use Authorization & Authentication in Asp.net, C#? -