我可以在 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=cpp
,PARSE
选项设置为 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 程序来测试它,我可以确认它可以工作。
我正在尝试将大约 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=cpp
,PARSE
选项设置为 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 程序来测试它,我可以确认它可以工作。