SQL*PLUS的异常处理-SP2-0606
使用SQLP*PLUS时,如果执行SQL*PLUS的特定命令,只要没有错误,就认为是执行正常;相反地,如果执行SQL或者PL/SQL命令,如果返回了正确的文本,则执行正常。当SQL*PLUS执行碰到错误时,默认地,它会报错并继续执行。当人工在交互式地执行命令时,这个特性是非常好的,但是在脚本中执行时,更希望在碰到错误的时候SQLPLUS能够退出并报错。SQLPLUS执行中的报错分为两种,一种是系统层面的报错,比如spool命令因为文件无法创建而失败时,所报的SP2-0606: Cannot create SPOOL file就是属于系统层面的报错,如果希望定制SQL*PLUS面对这种错误的处理方法,可以使用WHENEVER OSERROR这个命令,该命令的语法如下:
Sql代码
[*]WHENEVER OSERROR {EXIT
[*] | CONTINUE }
WHENEVER OSERROR {EXIT
| CONTINUE }
比如在SQL*PLUS中执行以下的一些命令:
Sql代码
[*]SQL> WHENEVER OSERROR EXIT FAILURE
[*]SQL> SPOOL /root/test
[*]SP2-0606: Cannot create SPOOL file "/root/test.lst"
[*]O/S Message: No such file or directory
[*]Disconnected from Oracle Database 10g Enterprise Edition>
[*]With the Partitioning, OLAP, Data Mining and Real Application Testing options
[*]$ echo $?
[*]1
SQL> WHENEVER OSERROR EXIT FAILURE
SQL> SPOOL /root/test
SP2-0606: Cannot create SPOOL file "/root/test.lst"
O/S Message: No such file or directory
Disconnected from Oracle Database 10g Enterprise Edition>
With the Partitioning, OLAP, Data Mining and Real Application Testing options
$ echo $?
1
另一种是SQL或者PL/SQL执行出错,类似地,可以使用WHENEVER SQLERROR定制SQL*PLUS的行为,该命令的语法如下,具体的例子就不重复了。
另一种是SQL或者PL/SQL执行出错,类似地,可以使用WHENEVER SQLERROR定制SQL*PLUS的行为,该命令的语法如下,具体的例子就不重复了。
Sql代码
[*]WHENEVER SQLERROR {EXIT
[*] | CONTINUE }
页:
[1]