From: | Dave Cramer <pg(at)fastcrypt(dot)com> |
---|---|
To: | "pgsql-jdbc(at)postgresql(dot)org" <pgsql-jdbc(at)postgresql(dot)org> |
Subject: | multiple out parameters implementation |
Date: | 2004-09-01 12:51:49 |
Message-ID: | 1094043108.1554.198.camel@localhost.localdomain |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-jdbc |
I've managed to hack into the jdbc driver the capability for multiple
out parameters from a postgresql function. Before you say no it can't be
done, read on.
Also before anyone gives me credit for the idea, the original work was
provided by Fujitsu japan, I can only take credit for implementing it in
the current driver.
The way this works is:
1) create a composite type eg:
create type Numeric_Proc_RetType as(it1 numeric(30,15),it2
numeric(30,15),it3 numeric(30,15))
2) create a function which returns this type.
create function
Numeric_Proc(numeric(30,15),numeric(30,15),numeric(30,15)) returns
Numeric_Proc_RetType as
'declare work_ret record; begin select * into work_ret from
Numeric_Tab; return work_ret; end;'
language 'plpgsql'
3)create a table
create temp table numeric_tab (MAX_VAL NUMERIC(30,15), MIN_VAL
NUMERIC(30,15), NULL_VAL NUMERIC(30,15) )
Then the following code now works:
CallableStatement call = con.prepareCall( func + "Numeric_Proc(?,?,?) }"
) ;
call.registerOutParameter(1,Types.NUMERIC);
call.registerOutParameter(2,Types.NUMERIC);
call.registerOutParameter(3,Types.NUMERIC);
call.setBigDecimal(2,new java.math.BigDecimal(1));
call.setBigDecimal(3,new java.math.BigDecimal(2));
call.setBigDecimal(4,new java.math.BigDecimal(3));
call.execute();
java.math.BigDecimal ret = call.getBigDecimal(1);
ret = call.getBigDecimal(2);
ret = call.getBigDecimal(3);
There is more work to be done, but I've found it relatively easy to do,
thanks largely to Oliver's rewrite of the code (Thanks Oliver!).
This is particularly useful to folks that want to port code from other
databases which do support multiple out parameters.
I would like to query the list as to their thoughts, is this a useful
feature for the driver ?
Dave
--
Dave Cramer
519 939 0336
ICQ # 14675561
www.postgresintl.com
From | Date | Subject | |
---|---|---|---|
Next Message | Qi, Xlaoyan | 2004-09-01 19:09:23 | JDBC driver |
Previous Message | Paul Thomas | 2004-09-01 09:28:22 | Re: JDBC Update question (quoted strings) |