Oracle FAQ Your Portal to the Oracle Knowledge Grid
HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US
 

Home -> Community -> Usenet -> c.d.o.misc -> Re: Cannot call ANY stored functions from Java

Re: Cannot call ANY stored functions from Java

From: Vladimir M. Zakharychev <bob_at_dpsp-yes.com>
Date: Thu, 21 Feb 2002 14:19:25 +0300
Message-ID: <a52kth$743$1@babylon.agtel.net>


This is a known JDBC bug when a pre-9.0.1 client connects to 9.0.1 database. replace your classes111.zip or classes12.zip (depending on JDK version) with newer versions (either from 8.1.7.2+ or from 9.0.1.1+) and you should be fine. If you have jars instead of zips, remove them from your classpath or replace them with versions from 9.0.1.1+.

btw, + = or later

--
Vladimir Zakharychev (bob@dpsp-yes.com)                http://www.dpsp-yes.com
Dynamic PSP(tm) - the first true RAD toolkit for Oracle-based internet applications.
All opinions are mine and do not necessarily go in line with those of my employer.


"damorgan" <dan.morgan_at_ci.seattle.wa.us> wrote in message news:3C741C7D.74D9B40E_at_ci.seattle.wa.us...

> All ORA-00600 messages mean one and only one thing: CALL ORACLE SUPPORT or open a TAR on
> metalink.
>
> We can not help you.
>
> And have your alert logs available.
>
> Daniel Morgan
>
>
>
> jacob nikom wrote:
>
> > Hi,
> >
> > I cannot call ANY stored procedure from my Java program. All
> > stored functions run very well in PL/SQL, but when I call them
> > from my Java program they crush with error codes like ORA-00600.
> >
> > Here is the code for one of my stored procedures which runs
> > very well in PL/SQL:
> > ---------------------------------------------------------------
> > PL/SQL code:
> >
> > CREATE OR REPLACE PACKAGE types AS
> > TYPE cursorType IS REF CURSOR;
> > END;
> > /
> >
> > CREATE OR REPLACE FUNCTION list_recs (id IN NUMBER)
> > RETURN types.cursorType IS tracks_cursor types.cursorType;
> > BEGIN
> > OPEN tracks_cursor FOR
> > SELECT * FROM accounts1
> > WHERE id = row_number;
> > RETURN tracks_cursor;
> > END;
> > /
> >
> > variable c refcursor
> > exec :c := list_recs(11)
> >
> > SQL> print c
> >
> > COLUMN1 A1 ROW_NUMBER
> > ---------- ---------- ----------
> > rec_11 jacob 11
> > rec_12 jacob 11
> > rec_13 jacob 11
> > rec_14 jacob 11
> > rec_15 jacob 11
> >
> > --------------------------------------------------------
> > Here is my Java code:
> >
> > import java.sql.*;
> > import java.io.*;
> >
> > import oracle.jdbc.driver.*;
> >
> > class list_recs
> > {
> > public static void main(String args[]) throws SQLException,
> > IOException
> > {
> > String query;
> > CallableStatement cstmt = null;
> > ResultSet cursor;
> >
> > // input parameters for the stored function
> > String user_name = "jacob";
> >
> > // user name and password
> > String user = "jnikom";
> > String pass = "jnikom";
> >
> > DriverManager.registerDriver(new oracle.jdbc.OracleDriver());
> >
> > try { Class.forName ("oracle.jdbc.driver.OracleDriver"); }
> > catch (ClassNotFoundException e)
> > { System.out.println("Could not load driver"); }
> >
> > Connection conn =
> > DriverManager.getConnection (
> > "jdbc:oracle:thin:@oracle_url:1521:bosdev",user,pass);
> > try
> > {
> > String sql = "{ ? = call list_recs(?) }";
> > cstmt = conn.prepareCall(sql);
> >
> > // Use OracleTypes.CURSOR as the OUT parameter type
> > cstmt.registerOutParameter(1, OracleTypes.CURSOR);
> > String id = "11";
> > cstmt.setInt(2, Integer.parseInt(id));
> >
> > // Execute the function and get the return object from the call
> > cstmt.executeQuery();
> > ResultSet rset = (ResultSet) cstmt.getObject(1);
> >
> > while (rset.next())
> > {
> > System.out.print(rset.getString(1) + " ");
> > System.out.print(rset.getString(2) + " ");
> > System.out.println(rset.getString(3) + " ");
> > }
> > }
> > catch (SQLException e)
> > {
> > System.out.println("Could not call stored function");
> > e.printStackTrace();
> > return;
> > }
> > finally
> > {
> > cstmt.close();
> > conn.close();
> > }
> > System.out.println("Stored function was called");
> > }
> > }
> >
> > Here is how I run it on Win2K and using Oracle9 on Solaris:
> >
> > C:\Jacob\Work\Java\Test\Vaultus\Oracle9i\FunctionReturnsResultset>java
> > list_recs
> > Could not call stored function
> > java.sql.SQLException: ORA-00600: internal error code, arguments:
> > [ttcgcshnd-1], [0], [], [], [], [], [], []
> >
> > at
> > oracle.jdbc.dbaccess.DBError.throwSqlException(DBError.java:168)
> > at oracle.jdbc.ttc7.TTIoer.processError(TTIoer.java:208)
> > at oracle.jdbc.ttc7.Oall7.receive(Oall7.java:543)
> > at oracle.jdbc.ttc7.TTC7Protocol.doOall7(TTC7Protocol.java:1405)
> >
> > at oracle.jdbc.ttc7.TTC7Protocol.fetch(TTC7Protocol.java:889)
> > at
> > oracle.jdbc.driver.OracleStatement.<init>(OracleStatement.java:490)
> > at
> > oracle.jdbc.driver.OracleStatement.getCursorValue(OracleStatement.java:2661)
> >
> > at
> > oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:4189)
> >
> > at
> > oracle.jdbc.driver.OracleStatement.getObjectValue(OracleStatement.java:4123)
> >
> > at
> > oracle.jdbc.driver.OracleCallableStatement.getObject(OracleCallableStatement.java:541)
> >
> > at list_recs.main(list_recs.java:42)
> >
> > C:\Jacob\Work\Java\Test\Vaultus\Oracle9i\FunctionReturnsResultset>
> >
> > I would appreciate any help,
> >
> > Jacob Nikom
>
Received on Thu Feb 21 2002 - 05:19:25 CST

Original text of this message

HOME | ASK QUESTION | ADD INFO | SEARCH | E-MAIL US