我的结构定义如下:
typedef struct{
int v1;
int v2;
}INFOS_HND;
INFOS_HND hnd_list[100];
EXEC SQL BEGIN DECLARE SECTION;
char statement[200];
int current_row = 0;
EXEC SQL END DECLARE SECTION;
我在 pro C/C++ 中使用此语句。
snprintf(statement, sizeof(statement), "select i1, i2, from table_a");
这是我的 SQL 指令:
EXEC SQL PREPARE SEL_INSTR FROM :statement;
EXEC SQL DECLARE MY_CURSOR CURSOR FOR SEL_INSTR;
EXEC SQL OPEN MY_CURSOR;
EXEC SQL WHENEVER NOT FOUND DO break;
while(1){
EXEC SQL FETCH MY_CURSOR INTO :hnd_list[current_row].v1, :hnd_list[current_row].v2;
current_row++;
EXEC SQL CLOSE MY_CURSOR;
编译时,显示以下错误:
PCC-S-02322, found undefined identifier
Semantic error at line 53, column 10, file my_file:
EXEC SQL FETCH MY_CURSOR INTO :hnd_list[current_row].v1;
PCC-S-02327, struct or struct pointer required
Semantic error at line 53, column 10, file my_file:
EXEC SQL FETCH MY_CURSOR INTO :hnd_list[current_row].v1;
PCC-S-02322, found undefined identifier
Semantic error at line 53, column 30, file my_file:
EXEC SQL FETCH MY_CURSOR INTO :hnd_list[current_row].v2;
PCC-S-02327, struct or struct pointer required
Semantic error at line 53, column 30, file my_file:
EXEC SQL FETCH MY_CURSOR INTO :hnd_list[current_row].v2;
最佳答案
类型和变量定义在 PRO*C/C++ DECLARE block 外部声明。所以预编译器无法解析声明。尝试将它们移动到 block 内,如下所示:
EXEC SQL BEGIN DECLARE SECTION;
typedef struct{
int v1;
int v2;
}INFOS_HND;
INFOS_HND hnd_list[100];
char statement[200];
int current_row = 0;
EXEC SQL END DECLARE SECTION;
关于c++ - 获取 typedef 结构数组中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31922714/