Re: [ODBC] Problem calling a function from ODBC application
От | Adrian Klaver |
---|---|
Тема | Re: [ODBC] Problem calling a function from ODBC application |
Дата | |
Msg-id | 09526511-a097-90b8-6e54-c28eb4c00487@aklaver.com обсуждение исходный текст |
Ответ на | Re: [ODBC] Problem calling a function from ODBC application ("Vilches, Alejandro" <alejandro.vilches@intel.com>) |
Ответы |
Re: [ODBC] Problem calling a function from ODBC application
|
Список | pgsql-odbc |
On 02/03/2017 04:31 PM, Vilches, Alejandro wrote: > Oh goodness, that's embarrassing :). > > Okay, so I've tried the following: > > - I fixed the small sample program and now that one executes successfully > > - I created another sample program that calls a stored function with the same number of parameters and types as the onein my real application and now that fails with the following error message (the same error message I originally reported): > ERROR: function my_function3(bigint, bigint, integer, integer, timestamp with time zone, integer, integer, integer, integer,integer, integer, unknown, unknown) does not exist; > Error while preparing parameters First I am not C programmer so approach with caution. Two things I noticed: 1) The above shows a function with 13 arguments, but your attached code shows it having 14 arguments. 2) In 12 of your SQLBindParameter statements you have (SQLPOINTER)¶m*, in two you have (SQLPOINTER)param* > > I've attached the new sample program. The stored function can be any dummy function. > > Thanks! > Alejandro > > -----Original Message----- > From: Inoue, Hiroshi [mailto:h-inoue@dream.email.ne.jp] > Sent: Friday, February 3, 2017 4:15 PM > To: Vilches, Alejandro <alejandro.vilches@intel.com>; Adrian Klaver <adrian.klaver@aklaver.com> > Cc: pgsql-odbc@postgresql.org > Subject: Re: [ODBC] Problem calling a function from ODBC application > > Hi, > > On 2017/02/04 4:41, Vilches, Alejandro wrote: >> Hi Adrian, >> >> Thanks for your reply. To be honest, my application is a bit more complex and I simplified things to make the questioneasier to ask. I did go back and write up a small program as described in the question and now the error messageI'm getting is 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;" > > I see the following in your code. > > ret = SQLPrepare(stmt, "{call my_function(?, ?, ?, ?}", SQL_NTS); > > Should the last part ... ?, ?} be ... ?, ?)} ? > > regards, > Hiroshi Inoue > >> 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 -- Adrian Klaver adrian.klaver@aklaver.com
В списке pgsql-odbc по дате отправления: