Re: ODBC : SQLGetData question

From: Nick Gorham <nick(at)lurcher(dot)org>
To: pgsql-odbc(at)postgresql(dot)org
Subject: Re: ODBC : SQLGetData question
Date: 2014-05-14 08:32:20
Message-ID: 53732A14.1000001@lurcher.org
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-odbc

On 14/05/14 08:46, Dev Kumkar wrote:
> On Wed, May 14, 2014 at 12:51 PM, Dev Kumkar <devdas(dot)kumkar(at)gmail(dot)com
> <mailto:devdas(dot)kumkar(at)gmail(dot)com>> wrote:
>
> On Wed, May 14, 2014 at 12:10 PM, aihtdikh <aihtdikh(at)gmail(dot)com
> <mailto:aihtdikh(at)gmail(dot)com>> wrote:
>
> Hi,
>
> SQLGetData expects the buffer length parameter to be a SQLLEN
> variable, which is a signed type.
> SQL_NULL_DATA is defined as -1, which is 4294967295 if you
> interpret it as an unsigned type.
>
> Your my_buff_len variable is being set to SQL_NULL_DATA
> correctly, but you are looking at it wrong.
> Change it to be the correct type, and it will work as you expect.
>
> Regards,
> Harun
>
>
> Thanks for the reply.
>
> my_buff_len is defined as SQLLEN
> SQLLEN my_buff_len;
>
>
> SQLGetData(my_stmt, my_col_no, SQL_C_CHAR, &my_max_len, 0,
> &my_buff_len)
>
> if (my_buff_len == SQL_NULL_DATA)
> {
> // Doesn't come here
> }
>
> What is being missed above?
>
> Regards...
>
>
> if ((int)my_buff_len == SQL_NULL_DATA)
> {
> // will come here
> }
>
> The above casting solves the problem, please review?
>
> Regards...

Just to suggest.

I would guess the application expects sizeof( SQLLEN ) == 8 and the
driver sizeof( SQLLEN ) == 4

--
Nick Gorham

In response to

Browse pgsql-odbc by date

  From Date Subject
Next Message aihtdikh 2014-05-14 08:47:25 Re: ODBC : SQLGetData question
Previous Message Dev Kumkar 2014-05-14 07:46:59 Re: ODBC : SQLGetData question