为什么不在 Oracle Pro*C 中声明 Cursor return sqlca.sqlcode?

Why doesn't Declare Cursor return sqlca.sqlcode in Oracle Pro*C?

最近,我对另一个问题中所述的程序错误感到困惑:

在大量使用 printf 等之后,我发现:

EXEC SQL Declare abc Cursor for select.. 没有 change/return sqlca.sqlcode

EXEC SQL Open abc;.. returns sqlca.sqlcode

EXEC SQL Fetch abc into .. ; .. returns sqlca.sqlcode

EXEC SQL Close abc; .. returns sqlca.sqlcode

EXEC SQL Commit; .. returns sqlca.sqlcode

我想了解为什么 declare 没有 return 任何代码,因为我们正在使用 EXEC SQL declare & 我认为 EXEC SQL 总是 returns sqlca.sqlcode

此外,Oracle Pro*C 是否有解释所有这些的文档?

提前致谢。

根据 Oracle's documentation on DEF_SQLCODE,所描述的行为似乎是一个错误;如果您在代码中设置了 #include <sqlqca.h>EXEC SQL INCLUDE SQLCA; 并设置了 DEF_SQLCODE=YES,那么它应该会返回一个代码。

他们的 documentation on handling runtime errors 可能会有用。