在Pro*C/C++中,用于检测错误和状态改变的方法有如下两种:
·定义状态变量SQLSTATE或SQLCODE,在执行了SQL语句后检查它们的值,并根据需要执行相应的操作。
·使用SQLCA。SQLCA被定义在头文件sqlca.h中。
在该程序中我们使用了SQLCA进行错误检测。关于SQLCA的详细描述请参阅第八章相关说明,这里不再累述。
WHENEVER语句用于检测并处理错误,使用该语句的语法如下:
EXEC SQL WHENEVER
例子:
EXEC SQL WHENEVER NOT FOUND CONTINUE ;
EXEC SQL WHENEVER SQLWARNING CONTINUE ;
EXEC SQL WHENEVER SQLERROR CONTINUE ;
1)条件(condition)
Oracle可自动检测以下条件:
·SQLWORING:当Oracle返回警告信息时会设置sqlworn[0]为“W”。使用该条件必须定义SQLCA。
·SQLERROR:出现严重错误,此时SQLCODE为负值。
·NOT FOUND:当Oracle不能找到满足条件的记录时SQLCODE被置为+1403。
2)操作(action)
当Oracle检测到以上条件时,应用程序可以执行如下操作:
·CONTINUE:继续运行下一条语句。
·DO:执行错误处理函数。
·GOTO lable_name:转移到标号处执行。
·STOP:停止执行,回滚事务。