PRB: Microsoft ESQL for C Generates Compiler Error with an Array (173843)



The information in this article applies to:

  • Microsoft SQL Server 2000 (all editions)

This article was previously published under Q173843

SYMPTOMS

The Visual C/C++ compiler generates the following compile error.
error C2231: '.iValue' : left operand points to 'struct', use ->
The following code attempts to use an array to hold iID, and will show the problem:
   // 
   // Retrieves one row of results. The SELECT INTO statement is also a
   // singleton select
   EXEC SQL select iID
         INTO :gTest[iCount].iValue
         FROM tblTest
         where iID = 1;
				

CAUSE

The current version of the NSQLPREP utility is not designed to handle array structures.

WORKAROUND

To work around this problem, use a pointer as shown by the following code:
   EXEC SQL begin declare section;

      typedef struct   stTest
      {
         int   iValue;
      }   TEST;

      TEST *   pCurrent   =   NULL;

   EXEC SQL end declare section;
      .
      .
      .

   // 
   // Can use a pointer to fill array
   pCurrent =  &gTest[iCount];

   // 
   // Retrieves one row of results. The SELECT INTO statement is also a
   // singleton select
   EXEC SQL select iID
         INTO :pCurrent->iValue
         FROM tblTest
         where iID = 1;
				

Modification Type:MajorLast Reviewed:10/3/2003
Keywords:kbcode kbprb KB173843