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: | Major | Last Reviewed: | 10/3/2003 |
---|
Keywords: | kbcode kbprb KB173843 |
---|
|