Re: [ODBC] Problem calling a function from ODBC application

Поиск
Список
Период
Сортировка
От Vilches, Alejandro
Тема Re: [ODBC] Problem calling a function from ODBC application
Дата
Msg-id 9CE034E149417949A58AA9A4FA7E1C5586DC1016@ORSMSX115.amr.corp.intel.com
обсуждение исходный текст
Ответ на Re: [ODBC] Problem calling a function from ODBC application  (Adrian Klaver <adrian.klaver@aklaver.com>)
Ответы Re: [ODBC] Problem calling a function from ODBC application  ("Inoue, Hiroshi" <h-inoue@dream.email.ne.jp>)
Список pgsql-odbc
Hi Adrian,

Thanks for your reply.  To be honest, my application is a bit more complex and I simplified things to make the question
easierto ask.  I did go back and write up a small program as described in the question and now the error message I'm
gettingis different, but I'm still having issues calling my function from ODBC. 

In essence, the problem I'm having is calling a function from ODBC that has an output parameter.  I can call it just
finefrom psql by simply executing "select * from my_function(...)".  But calling it from my application I get the
followingerror: "ERROR: syntax error at end of input;" 

Please find the source code attached.  The stored function is very simple and silly:

CREATE OR REPLACE FUNCTION public.my_function(a integer, b bigint, c character varying, OUT d bigint)
 RETURNS bigint
 LANGUAGE plpgsql
AS $function$
BEGIN
    d := a + b + char_length(c);
END
$function$

Thanks!
Alejandro

-----Original Message-----
From: Adrian Klaver [mailto:adrian.klaver@aklaver.com]
Sent: Wednesday, February 1, 2017 7:16 PM
To: Vilches, Alejandro <alejandro.vilches@intel.com>; pgsql-odbc@postgresql.org
Subject: Re: [ODBC] Problem calling a function from ODBC application

On 02/01/2017 07:05 PM, Vilches, Alejandro wrote:
> Hi,
>
>
>
> I'm having an issue calling a stored function in my database from my
> application using ODBC.  The application creates a prepared statement
> with the following string/text using SQLPrepare(): "{call
> my_function(?, ?, ?, ?)}" (where the fourth parameter is an out
> parameter).  Then, it binds the parameters using SQLBindParameter()
> and specifying the correct data types.  This is the function's signature:
>
> "my_function(in a integer, in b bigint, in c character varying, out d
> bigint)".
>
>
>
> However, when I execute the application, I get the following error:
>
> ERROR: function my_function(integer, bigint, unknown) does not exist;
>
>
>
> Why does it recognize the first two parameters correctly and not the
> third one?  I've double checked everything including the binding of
> that parameter to make sure it's the correct type (SQL_VARCHAR).

I think this is going to require  showing the actual entire code sequence that sets up the parameters and binds them
andthen calls the function. 

>
>
>
> The details:
>
>
>
> Language: C/C++
>
> GCC: 4.8.5
>
> ODBC driver manager: unixODBC 2.3.1
>
> PostgreSQL: 9.4.5
>
> PostgreSQL ODBC driver: psqlodbc-09.05.0400
>
> OS: SLES 12-SP1
>
>
>
> Sorry if this is a repeated question.  I tried searching and couldn't
> find a solution.
>
>
>
> Any help is greatly appreciated.
>
>
>
> Thanks!
>
> Alejandro
>


--
Adrian Klaver
adrian.klaver@aklaver.com

Вложения

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

Предыдущее
От: Daniil Megrabyan
Дата:
Сообщение: [ODBC] MyLog and CommLog options
Следующее
От: "Inoue, Hiroshi"
Дата:
Сообщение: Re: [ODBC] Problem calling a function from ODBC application