Re: JDBC and inet type

Поиск
Список
Период
Сортировка
От Bill Moran
Тема Re: JDBC and inet type
Дата
Msg-id 20151204071758.1b54151d53a1ed257d8f9124@potentialtech.com
обсуждение исходный текст
Ответ на JDBC and inet type  (Tim Smith <randomdev4+postgres@gmail.com>)
Ответы Re: JDBC and inet type  (Tim Smith <randomdev4+postgres@gmail.com>)
Список pgsql-general
On Fri, 4 Dec 2015 09:41:24 +0000
Tim Smith <randomdev4+postgres@gmail.com> wrote:

> When I use "preparedStatement.setString(5,ip);" to send values to a
> stored function, it obviously gets sent to postgres as "character
> varying".
>
> Postgres obviously complains loudly and says " Hint: No function
> matches the given name and argument types. You might need to add
> explicit type casts.".
>
> What is the appropriate workaround ?

You can define param 5 as varchar in your query, as Rob suggests:

CREATE FUNCTION some_function(int, int, int, int, int, varchar) ...

Then cast the 5th parameter to INET within your function.

You can also cast the value in your SQL.

sql = "SELECT some_function($, $, $, $, $::INET)"; ...

You could also create an Inet class in Java and implement the
SQLData interface, then use setObject() instead of setString().
It doesn't appear as if anyone has done this yet, but it would
be nice if it were incluced in the JDBC driver.

The first answer is probably best for stored procedures, as it
simplifies things down the road. The second solution is more
universal, as it works for non-function-calling SQL as well.
The third solution is probably _really_ the correct one, from
a pedantic standpoint, but it's a bit more work to implement.

--
Bill Moran


В списке pgsql-general по дате отправления:

Предыдущее
От: rob stone
Дата:
Сообщение: Re: JDBC and inet type
Следующее
От: David Steele
Дата:
Сообщение: Re: Pgbasebackup help