Knowledge Base

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

Article ID: 173843

Article Last Modified on 10/3/2003


APPLIES TO


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;
				

Additional query words: ESQL E-SQL SQC

Keywords: kbprb kbcode KB173843