PRO C中的PREPARE QUERY何时失败?
EXEC SQL AT :db_id PREPARE QUERY FROM :sql_query;
bool sql_status = (sqlca.sqlcode == OERR_ORACLE_SUCCESS);
if (sql_status)
{
}
else
{
}
直到最近我才遇到这个问题,代码工作正常PREPARE QUERY工作正常(如果是loop_,但是突然之间失败了,之后就没有工作了(进入else循环) 。
没有任何改变,它是相同的二进制文件。
过去有人遇到过类似的问题吗?
答案 0 :(得分:0)
我过去写了很多pro * c,随着时间的推移意识到你不想检查PREPARE语句的返回码,因为它永远不会返回任何值。这就是我的意思:
PREPARE sqlca.sqlcode值是在PREPARE语句之前立即运行的语句的返回码。换句话说,如果检查PREPARE语句的输出和在PREPARE语句失败之前执行的语句,那么准备的返回代码将失败。如果前一个语句成功,则PREPARE似乎已成功。
换句话说,准备sqlca.sqlcode值基本上没什么(它本身不会失败)。因此,如果PREPARE现在失败,请检查在PREPARE语句之前执行的语句,并确保检查该语句的sqlca.sqlcode值。我敢打赌,前一个语句失败了,返回的错误与该语句有关。有意义吗?
-Jim