Link to home
Start Free TrialLog in
Avatar of chandubcs
chandubcs

asked on

Error in getting Oracle CURSOR from Oracle procedure using REF CURSOR in Websphere WSAD 5

Hi,

I need to retrieve a OracleTypes.CURSOR in the form of java ResulstSet into my JSP page from Oracle database.

The JSP looks like:
<%@ page import = "java.sql.*" %>
<%@ page import = "oracle.jdbc.driver.*" %>
......
conn = DriverManager.getConnection(databaseURL, databaseUsername, databasePassword);
cs = conn.prepareCall("{call FIRST(?)}");
cs.registerOutParameter(1, OracleTypes.CURSOR);
cs.execute();
rs = (ResultSet) cs.getObject(1);
...........

Oracle procedure is:
.............
TYPE ref_cursor IS REF CURSOR;
CREATE OR REPLACE PROCEDURE FIRST (
 r_cursor OUT ref_cursor
) IS
BEGIN
  open r_cursor for
    select a, b, c from table;
END;

This code is giving me an error as "java.sql.SQLException: ORA-06550: line 1, column 7: PLS-00306: wrong number or types of arguments in call to 'FIRST' ORA-06550: line 1, column 7: PL/SQL: Statement ignored ", but the same code used to work perfectly in weblogic 5. Now, I am using Websphere Studio WSAD 5, Oracle 8.1.7, Oracle thin driver.

One more thing here is... when I change the OUT parameter in Oracle to VARCHAR2 and assign some value to it and in JSP if I use cs.registerOutParameter(1, OracleTypes.VARCHAR), it is working fine and giving me the result with no errors. What could be the problem? Is that the oracle.jdbc.driver.OracleTypes.CURSOR ???

Could anyone please advice me.

Thanks,
Avatar of justAGrl
justAGrl

We had a similar situation on our project(same configuration - Websphere Studio WSAD 5, Oracle 8.1.7, Oracle thin driver), working with no problems... the only difference is that we used
oracle.jdbc.OracleTypes.CURSOR not oracle.jdbc.driver.OracleTypes.CURSOR, and we have used DataSource to get db connection (with implementationClassName="oracle.jdbc.pool.OracleConnectionPoolDataSource")
Avatar of chandubcs

ASKER

Hi,

   I got the solution by myself. In oracle, TYPE ref_cursor IS REF CURSOR will work only with the Oracle packages. So, when I kept my oracle procedures into a package, it started working. Thanks for your comment though.

ASKER CERTIFIED SOLUTION
Avatar of modulo
modulo

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial