c++ - 获取 typedef 结构数组中的行

标签 c++ sql c oracle

我的结构定义如下:

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/

相关文章:

c - 为什么我的 C 程序不打印数组值?

c - C 字符串中的十六进制值

c++ - 为什么这个 C++ 程序的第一个输出不显示 float ?

java - 使用预准备语句的变量列名

sql - 使用输入文件从在线数据库中检索数据

c - C 中的 Tee 函数调用不起作用而不是 tee 命令

c++ - 由 const 引用传递的参数由 const 引用返回

c++ - VC++ 2010 速成 |编译器从我的项目中删除了一些代码

c++ - 模板类型推导中的隐式转换

sql - 查询以删除列中字符串的第一个和第二个连字符之间的所有内容