Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Calling Oracle stored procedure from Java

I'm calling an Oracle stored function using JDBC thin driver.
Following is the code.

class testSP 
{ 
  public static void main (String args []) 
                     throws SQLException, ClassNotFoundException 
  { 
      String driver_class = "oracle.jdbc.driver.OracleDriver"; 
      String connect_string = "jdbc:oracle:thin:@xxx.xx.xx.xx:1521:xxxx"; 

      Connection conn; 

      Class.forName(driver_class); 
      conn = DriverManager.getConnection(connect_string, "xxxx", "xxxx"); 

      // OracleCallableStatement ocs = 
      //    (OracleCallableStatement)conn.prepareCall(
      //        "{? = call acpks_stmt_gen.fn_stmt_gen(?,?,?,?,?,?)}");
      CallableStatement ocs = 
         conn.prepareCall(
            "{? = call acpks_stmt_gen.fn_stmt_gen(?,?,?,?,?,?)}");

      ocs.registerOutParameter(1, java.sql.Types.ARRAY);

      ocs.setString(2, "144000014");
      ocs.setString(3, "RET");
      ocs.setString(4, "N");
      ocs.setString(5, "3");
      ocs.setNull(6, java.sql.Types.DATE) ;
      ocs.setNull(7, java.sql.Types.DATE);



      ocs.executeUpdate(); 

     // java.sql.ResultSet rs2 = (java.sql.ResultSet) ocs.getResultSet();

  }

}

When I call this I get an exception as following

Exception in thread "main" java.sql.SQLException: ORA-03115: unsupported network datatype or representation

I'm using the thin driver ojdbc6.jar provided by Oracle.
and I'm using this in my class path.

Thanks.

like image 503
javaguy Avatar asked Apr 01 '26 02:04

javaguy


1 Answers

Try

  ocs.setString(6, "") ;
  ocs.setString(7, "");

instead of

  ocs.setNull(6, java.sql.Types.DATE);
  ocs.setNull(7, java.sql.Types.DATE);

making use of the fact that in Oracle, the empty string is the same as NULL.

In my current project, I've encountered similar problems with NULLs that could be solved that way. (Yes, that's fugly)

like image 149
Erich Kitzmueller Avatar answered Apr 02 '26 19:04

Erich Kitzmueller



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!