Re: jdbc + CallableStatement +Incorrectly registered parameters



piernik wrote:
> Hello I'm trying to learn how to work with stored procedures in
> Oracle and java. I deal fine with ResultSets and PreparedStatement
> now I want to use functions and CallableStatement.
> I wrote my code looking at this sites:
>
>
http://andrej.racchvs.com/archives/2003/10/29/using-oracle-ref-cursors-in-java/
> http://www.samspublishing.com/articles/article.asp?p=26251&seqNum=7
> http://www.cs.bris.ac.uk/maintain/OracleDocs/java.816/a81354/samapp2.htm
> http://www.enterprisedt.com/publications/oracle/result_set.html
>
> I've created a package with a function to find buss connection
> between 2 cities CREATE OR REPLACE PACKAGE cursors_pkg
> AS
> type dire_city_curs is record (
> bus_id Bus_Schedule.bus_id%TYPE,
> station_name Station.station_name%TYPE,
> arrival_tim Bus_Schedule.arrival_time%TYPE,
> departure_time Bus_Schedule.departure_time%TYPE,
> station_nr Bus_Schedule.station_nr%TYPE);
> TYPE refcursortype IS REF CURSOR return dire_city_curs;
> FUNCTION getdirect(from_city varchar2, to_city varchar2) RETURN
> refcursortype; END cursors_pkg;
>
> CREATE OR REPLACE PACKAGE BODY cursors_pkg IS
> FUNCTION getdirect(from_city varchar2, to_city varchar2) RETURN
> refcursortype IS
> mycursor refcursortype;
> BEGIN
> OPEN kurszor FOR
> select **bla bla**
> RETURN mycursor;
> END;
> END cursors_pkg;
>
> now java
>
> String usersSql = "{ call ? = cursors_pkg.getdirect(?,?) }";
> CallableStatement stmt = db.prepareCall(usersSql);
> stmt.registerOutParameter(1,OracleTypes.CURSOR);
> stmt.setString(new String("from_city"),"London");
> stmt.setString(new String("to_city"),"Paris");
>
> stmt.execute();
> ResultSet rset = (ResultSet) stmt.getObject(1);
> //or ResultSet rset = ((OracleCallableStatement)stmt).getCursor (1);
> while (rset.next()){
> System.out.println( rset.getDouble(1) +" "+ rset.getString(2));
> }
> and the effect of my efforts:
> SQLException: Incorrectly set or registered parameters.:null
> I'm puzzled. I don't understand what goes wrong. Can you give me any
> hints?
> I was sent to
> http://www.oracle.com/technology/tech/java/sqlj_jdbc/htdocs/jdbc_faq.htm
> but I find there nothing interesting.
>
> thank you for help

I'm just thinking on-line here... try

String usersSql = "{ call ? = cursors_pkg.getdirect( from_city ?, to_city
?) }";
CallableStatement stmt = db.prepareCall(usersSql);
stmt.registerOutParameter(1,OracleTypes.CURSOR);
stmt.setString(2,"London");
stmt.setString(3,"Paris");

stmt.execute();
ResultSet rset = (ResultSet) stmt.getObject(1);
//or ResultSet rset = ((OracleCallableStatement)stmt).getCursor (1);
while (rset.next()){
System.out.println( rset.getDouble(1) +" "+ rset.getString(2));
}

based on the premise that you only want to substitute the data via the
parameters, not the parameter names.

A little further looking on the net tells me that the use of named
parameters is part of JDBC 3.0 and older drivers may not support the use of
named parameters.

--
Virgil


.



Relevant Pages

  • jdbc + CallableStatement +Incorrectly registered parameters
    ... I've created a package with a function to find buss connection between 2 cities ... FUNCTION getdirect(from_city varchar2, to_city varchar2) RETURN refcursortype; ... now java ...
    (comp.lang.java.databases)
  • Re: Help trying to debug this DUMB pl/sql code
    ... I have a package I'm trying to run through a debugger and find some ... The package uses a defined type VARRAY: ... p_save_out OUT VARCHAR2, ... Puget Sound Oracle Users Group ...
    (comp.databases.oracle.server)
  • Re: Oracle <= 9i / 10g File System Access via utl_file Exploit
    ... I don't think so its any new vulnerability or exploit ... Traversal via this package ... -- for any special privileges (CONNECT and RESOURCE ... in varchar2, p_filename in varchar2) as ...
    (Bugtraq)
  • Re: Any suggestions with this updated code????
    ... This Oracle sproc is so ... --Create a package to declare a ref cursor globally ... street_no in varchar2, street_name in varchar2); ... create or replace package body property1 as ...
    (microsoft.public.vb.database.ado)
  • Re: Help trying to debug this DUMB pl/sql code
    ... I have a package I'm trying to run through a debugger and find some ... The package uses a defined type VARRAY: ... p_save_out OUT VARCHAR2, ... If I try to debug using SQL Developer, ...
    (comp.databases.oracle.server)