检测错误和状态改变


在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:停止执行,回滚事务。

09-20 03:35