我可以在 Pro*C 的全局范围内使用 SQL DECLARE 部分吗?

Can I use an SQL DECLARE section at global scope in Pro*C?

我正在尝试将大约 2000 行 Pro*C 程序移植到 C++ (Pro*C++)。它充满了在 SQL 查询中用作主变量的全局变量:

char var1;
char var2;

int execute_query() {

    // some code

    EXEC SQL SELECT ... INTO :var1
    EXEC SQL SELECT ... INTO :var2

    // some code

}

然而,在预编译器选项中使用 code=cppPARSE 选项设置为 PARTIAL,这意味着预编译器仅识别在 DECLARE 部分中声明的主机变量.

我可以只用声明部分包围全局变量吗?

EXEC SQL BEGIN DECLARE SECTION

   char var1;
   char var2;

EXEC SQL END DECLARE SECTION

int execute_query() {

    // some code

    EXEC SQL SELECT ... INTO :var1
    EXEC SQL SELECT ... INTO :var2

    // some code

}

如果不是,是否有另一种方法可以让预编译器在不进行大量重构的情况下识别全局变量?

可以。

经过多次折腾,我终于成功地创建了一个独立的 Pro*C 程序来测试它,我可以确认它可以工作。