Microsoft KB Archive/173856

From BetaArchive Wiki
Knowledge Base


BUG: Dbreadtext Incorrectly Processes All Result Sets

Article ID: 173856

Article Last Modified on 10/3/2003



APPLIES TO

  • Microsoft SQL Server 6.5 Standard Edition



This article was previously published under Q173856

SYMPTOMS

BUG #: 16825 (Windows: 6.50)

The SQL Server Books Online says the following:

To read successive chunks of the same SQLTEXT or SQLIMAGE value, call dbreadtext until it returns 0 (end of row).


Zero (0) indicates the end of the row, and -1 indicates that an error occurred.

Sending the following batch results in three distinct result sets:

   select 1
   select pr_info from pub_info where pub_id = '0736'
   select 3
                

If you loop through dbresults, the first result set returns an integer column. You can use dbcoltype and dbnumcol to determine the column information and to help set up the proper dbbind and retrieve the integer column data. Your code will process all rows with dbnextrow calls and then call dbresults to begin processing the second result set.

The second result set contains the text column. The dbreadtext calls to process the results properly returns (0) to signal the end of the text row. However, by this time, the dbreadtext also processes the third result set. The next call to dbresults returns NO_MORE_RESULTS.

WORKAROUND

To work around this problem, do either of the following:

  • Make sure the text result is the final result set on the batch. -or-


  • Use the dbdata and dbnextrow functions to process the text where possible.


STATUS

Microsoft has confirmed this to be a problem in SQL Server version 6.5. We are researching this problem and will post new information here in the Microsoft Knowledge Base as it becomes available.

Keywords: kbbug kbprogramming KB173856