Re: Output parameters

From: Bart Samwel <bart(at)samwel(dot)tk>
To: Hiroshi Inoue <inoue(at)tpf(dot)co(dot)jp>
Cc: pgsql-odbc(at)postgresql(dot)org
Subject: Re: Output parameters
Date: 2006-05-18 09:33:37
Message-ID: 446C3F71.6060500@samwel.tk
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

Hiroshi Inoue wrote:
> Bart Samwel wrote:
>> Hiroshi Inoue wrote:
>>> Bart Samwel wrote:
>>>> Hiroshi Inoue wrote:
>>>>> Bart Samwel wrote:
>>>>>> Hi there,
>>>>>>
>>>>>> I've got a situation with the experimental enhanced branch driver
>>>>>> (version 7.03.02.66), PostgreSQL 8.1 backend. I'm executing a
>>>>>> query such as:
>>>>>>
>>>>>> SELECT myproc(?,?,?,?,?,?,?)
>>>>>>
>>>>>> where a number of the parameters are output parameters. I've bound
>>>>>> buffers to the output parameters, but when I read the values, they
>>>>>> contain garbage (uninitialized data, to be precise -- 0xcdcdcdcd).
>>>>>
>>>>> What kind of tool are you using and how do you execute the above
>>>>> example concretely ?
>>>>
>>>> I'm using our own ODBC front end library, freshly written from spec.
>>>> The same code works like a charm on Oracle to retrieve output
>>>> parameters. I could figure out the exact sequence of calls if you
>>>> want, there's quite a lot of wrapper code around it but It'd
>>>> probably be possible.
>>>
>>> Could you send me the Mylog output ?
>>
>> Yes, it's attached. Please read on for some extra context information.
>> :-)
>>
>> Anyway, it turns out that I misinterpreted the way PostgreSQL
>> implements output parameters -- apparently, they are nothing but a
>> convenient way to make PostgreSQL create a complex return type for a
>> function. In PL/pgSQL, however, I can't specify the output parameters
>> in the parameter list, while with the ODBC driver I can.
>
> Please use ODBC's standard syntax to execute functions or procedures.
>
> {[?=]call procedure-name[([?][,[?]]...)]}
>
> For example, please execute {CALL baz(?, ?)} in your case.

Ah, that did the trick! I wasn't aware of this standard syntax, we've
only recently started to use *real* ODBC instead of just using it as an
easy way of getting the same SQL into different databases through one
interface. I guess we'll have to start using more of these ODBC
constructs. Thanks very much for your explanation!

Cheers,
Bart

In response to

Browse pgsql-odbc by date

  From Date Subject
Next Message noreply 2006-05-19 05:23:01 [ psqlodbc-Bugs-1000648 ] Visual Studio 2005 DataSet Designer "Add Query..." wizard fails with a syntax error if SELECT query contains a WHERE clause
Previous Message Hiroshi Inoue 2006-05-17 23:32:47 Re: Output parameters