Re: passing user defined data types to stored procedures - Mailing list pgsql-jdbc

From Jay Howard
Subject Re: passing user defined data types to stored procedures
Date
Msg-id 7569a8ec0811150943l62746eefm8e4f034a1d69b624@mail.gmail.com
Whole thread Raw
In response to Re: passing user defined data types to stored procedures  (Kris Jurka <books@ejurka.com>)
Responses Re: passing user defined data types to stored procedures
List pgsql-jdbc
Interesting.  I did some experimenting with this last night, and it led to a followup question:

Is it possible to return (and pass) arrays using java.sql.Array?

I wrote a test proc that returns an array of integers.  I can retrieve it on the java side as a Jdbc3Array, which implements java.sql.Array.

Unfortunately, getArray() (and its variants) seem not to have been implemented yet by Jdbc3Array.

Any way to pass arrays back and forth?  I could always have the proc return a refcursor and handle it in Java as a ResultSet, but I was looking for a convenient way to avoid that.

On Sat, Nov 15, 2008 at 11:25 AM, Kris Jurka <books@ejurka.com> wrote:


On Fri, 14 Nov 2008, Jay Howard wrote:

Does the driver support passing UDTs as arguments to stored procs?


Sort of, but not in the standard fashion.  SQLData is not supported, but it is possible to do it using PGobject (a postgresql specific extension).  If you make your class Foo extend PGobject [1] and make getType return the type name and getValue return the text representation that the server expects it will work for sending data to the server.  To get objects of this type back from the server, you must register them via PGConnection.addDataType [2].

Sample text representation of a complex type:

jurka=# create type mytype as (a int, b text, c date);
CREATE TYPE
jurka=# select '(3,"a,b",2008-11-20)'::mytype;
       mytype
----------------------
 (3,"a,b",2008-11-20)
(1 row)

Kris Jurka

[1] http://jdbc.postgresql.org/documentation/publicapi/org/postgresql/util/PGobject.html
[2] http://jdbc.postgresql.org/documentation/publicapi/org/postgresql/PGConnection.html#addDataType(java.lang.String,%20java.lang.Class)

pgsql-jdbc by date:

Previous
From: Kris Jurka
Date:
Subject: Generated keys support
Next
From: Kris Jurka
Date:
Subject: Re: passing user defined data types to stored procedures