Hi, Adrian,

On Sat, Mar 7, 2026 at 3:29 PM Adrian Klaver <[email protected]> wrote:
>
> On 3/7/26 12:46 PM, Igor Korot wrote:
> > Hi, David,
> >
> > On Sat, Mar 7, 2026 at 12:03 PM David G. Johnston
> > <[email protected] <mailto:[email protected]>> wrote:
> >
> >     On Sat, Mar 7, 2026 at 12:58 PM Igor Korot <[email protected]
> >     <mailto:[email protected]>> wrote:
> >
> >         So I started looking for a way to return SQL_NO_DATA
> >         on that 4th column...
> >
> >
> >     Doesn't "No Data" refer to the result set as a whole, not individual
> >     columns?  I'd assume NULL is detected some other way.
> >
> >
> > No, I think it’s column based.
>
> 1) My knowledge of ODBC is limited.
>
> 2) This:
>
> https://learn.microsoft.com/en-us/sql/odbc/reference/develop-app/return-codes-odbc?view=sql-server-ver17
>
> "SQL_NO_DATA    No more data was available. The application calls
> SQLGetDiagRec or SQLGetDiagField to retrieve additional information. One
> or more driver-defined status records in class 02xxx may be returned.
> Note: In ODBC 2.x, this return code was named SQL_NO_DATA_FOUND."
>
> would seem to indicate that David Johnston is correct:

>From the SQLGetData() ODBC documentation
(https://learn.microsoft.com/en-us/sql/odbc/reference/syntax/sqlgetdata-function?view=sql-server-ver17):

[quote]
When it returns the last part of the data, SQLGetData returns
SQL_SUCCESS. Neither SQL_NO_TOTAL nor zero can be returned on the last
valid call to retrieve data from a column, because the application
would then have no way of knowing how much of the data in the
application buffer is valid. If SQLGetData is called after this, it
returns SQL_NO_DATA. For more information, see the next section,
"Retrieving Data with SQLGetData."
[/quote]

However it looks like the driver does not behave as expected.

It keeps returning SQL_SUCCESS continuously...

Or am I misinterpreting the docs?

Thank you.

>
> 'Doesn't "No Data" refer to the result set as a whole, not individual
> columns?  I'd assume NULL is detected some other way.'
>
> > The call to SQLGetData() returns data in one column.
> >
> > And as stated it successfully retrieves empty array for column 3 and
> > moves on.
> >
> > Thank you.
> >
> >
> >     David J.
> >
>
>
> --
> Adrian Klaver
> [email protected]


Reply via email to