Re: Problems with Timestamp and Function Calls in JDBC/Prepared
От | Kris Jurka |
---|---|
Тема | Re: Problems with Timestamp and Function Calls in JDBC/Prepared |
Дата | |
Msg-id | Pine.BSO.4.63.0604211454001.1040@leary2.csoft.net обсуждение исходный текст |
Ответ на | Problems with Timestamp and Function Calls in JDBC/Prepared Statement (tarabas@tarabas.de) |
Ответы |
Re: Problems with Timestamp and Function Calls in JDBC/Prepared
|
Список | pgsql-jdbc |
On Fri, 21 Apr 2006, tarabas@tarabas.de wrote: > I am having a bit trouble with function-calls containing timestamps. > > CREATE OR REPLACE FUNCTION do_something(int8, int8, int8, int8, > timestamptz, timestamptz, timestamptz, timestamptz, int8, timestamptz, > "varchar", int8, int8, "numeric", int8, int8) > RETURNS int8 AS > > When I now try to call the function through the JDBC 8.1-405 JDBC 3 > with a prepared Statement I do this: > > ps.setDouble(14, param14); I belive this line is actually your problem, not the timestamps. Your function is declared to take numeric, so you should ps.setBigDecimal() to get that type. setDouble implies a float8 type which does not work... CREATE FUNCTION f(numeric) RETURNS int AS 'SELECT 1;' LANGUAGE sql; SELECT f(1::float8); ERROR: function f(double precision) does not exist > The odd thing is that when I do a setTimestamp() and the param is null, > the type timestamp seems to be used correctly (it is set to 1184). But > when the Timestamp is filled, the type is set to 0 in the prepared > statement. When passing timestamp values to the server the JDBC driver must leave them as an unresolved type because it does not know if it is a timestamp or timestamptz. This is not an issue with a null value because in that case the conversion between timestamp and timestamptz cannot alter the value, so we can give the server a hint about the type involved. Kris Jurka
В списке pgsql-jdbc по дате отправления: