Re: JDBC exception, incompatible types in simple stored procedure.

From: "Albe Laurenz" <laurenz(dot)albe(at)wien(dot)gv(dot)at>
To: "uprooter *EXTERN*" <uprooter(at)gmail(dot)com>, <pgsql-jdbc(at)postgresql(dot)org>
Subject: Re: JDBC exception, incompatible types in simple stored procedure.
Date: 2009-01-20 08:54:12
Message-ID: D960CB61B694CF459DCFB4B0128514C202F75D8D@exadv11.host.magwien.gv.at
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-jdbc

uprooter wrote:
> I'm using this code to access a very simple stored procedure
> that has 1 in
> parameter and 1 out parameter:
> String url = "jdbc:postgresql://localhost/DB2";
> Properties props = new Properties();
> props.setProperty("user", "user");
> props.setProperty("password", "blah");
> Connection conn = DriverManager.getConnection(url, props);
> CallableStatement upperProc = conn.prepareCall("{ ? = call stub( ? ) }");
> upperProc.registerOutParameter(1, Types.OTHER);
> upperProc.setInt(2, 2);
> upperProc.execute();
> Object upperCased = upperProc.getObject(1);
> System.out.println("uppercased:" + upperCased.toString());
> upperProc.close();
>
> I'm getting the following exception:
> Exception in thread "main" org.postgresql.util.PSQLException: A
> CallableStatement function was executed and the out parameter 1 was of type
> java.sql.Types=-5 however type java.sql.Types=1111 was registered.
>
> I know I can register to another type but due to other restrictions I can't
> change the registration type.
> Any idea ?

Maybe you can use PreparedStatement:

PreparedStatement stmt = conn.prepareStatement("SELECT stub( ? )");
stmt.setInt(1, 2);
ResultSet rs = stmt.executeQuery();
rs.next();
System.out.println("uppercased: " + rs.getObject(1));
rs.close();

Yours,
Laurenz Albe

In response to

Responses

Browse pgsql-jdbc by date

  From Date Subject
Next Message uprooter 2009-01-20 09:24:55 Re: JDBC exception, incompatible types in simple stored procedure.
Previous Message Kent Tong 2009-01-20 03:44:37 experience sharing: select query returns more records than necessary