Re: ODBC : SQLGetData question - Mailing list pgsql-odbc

From Nick Gorham
Subject Re: ODBC : SQLGetData question
Date
Msg-id 53732A14.1000001@lurcher.org
Whole thread Raw
In response to Re: ODBC : SQLGetData question  (Dev Kumkar <devdas.kumkar@gmail.com>)
List pgsql-odbc
On 14/05/14 08:46, Dev Kumkar wrote:
On Wed, May 14, 2014 at 12:51 PM, Dev Kumkar <devdas.kumkar@gmail.com> wrote:
On Wed, May 14, 2014 at 12:10 PM, aihtdikh <aihtdikh@gmail.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

pgsql-odbc by date:

Previous
From: Dev Kumkar
Date:
Subject: Re: ODBC : SQLGetData question
Next
From: aihtdikh
Date:
Subject: Re: ODBC : SQLGetData question