FIX: SQLGetData() Returns SQL_NO_TOTAL in RFX_LongBinary()

ID: Q132399


The information in this article applies to:


SYMPTOMS

An assertion may occur in RFX_LongBinary() if an ODBC driver returns a value of SQL_NO_TOTAL (-4) in the location pointed to by plLength after calling SQLGetData().


CAUSE

The MFC RFX_LongBinary() function assumes that an ODBC driver won't return SQL_NO_TOTAL from SQLGetData(). This is by design.


RESOLUTION

If you must use RFX_LongBinary() to map a binary field to a CLongBinary variable, use the RFX_LongBinary() function in BLOBRFX.EXE. BLOBRFX.EXE, a self-extracting file, contains two files: BLOBRFX.CPP and BLOBRFX.H. BLOBRFX.CPP contains an RFX_LongBinary2() function, which can be used in place of RFX_LongBinary() in your CRecordset's DoFieldExchange() function. BLOBRFX.H contains the prototype for the RFX_LongBinary2() function.

The following file is available for download from the Microsoft Software Library:

Blobrfx.exe
For more information about downloading files from the Microsoft Software Library, please see the following article in the Microsoft Knowledge Base:
Q119591 How to Obtain Microsoft Support Files from Online Services
NOTE: If you are using a precompiled header in your project, you may want to add the following line of code to the top of BLOBRFX.CPP:

   #include "stdafx.h" 


STATUS

This behavior is by design. This problem was corrected in Visual C++ version 4.2 and above.


REFERENCES

The ODBC Programmer's Reference in the Visual C++ Online Books provides information about SQLGetData().

Additional query words: Oracle


Keywords          : kbfile kbprg kbDatabase kbMFC kbODBC kbVC 
Version           : 1.52 2.1 4.0
Platform          : NT WINDOWS 
Issue type        : kbprb 

Last Reviewed: July 30, 1999