SQL*PLUS的异常处理

使用SQLP*PLUS时,如果执行SQL*PLUS的特定命令,只要没有错误,就认为是执行正常;相反地,如果执行SQL或者PL/SQL命令,如果返回了正确的文本,则执行正常。当SQL*PLUS执行碰到错误时,默认地,它会报错并继续执行。当人工在交互式地执行命令时,这个特性是非常好的,但是在脚本中执行时,更希望在碰到错误的时候SQLPLUS能够退出并报错。

SQLPLUS执行中的报错分为两种,一种是系统层面的报错,比如spool命令因为文件无法创建而失败时,所报的SP2-0606: Cannot create SPOOL file就是属于系统层面的报错,如果希望定制SQL*PLUS面对这种错误的处理方法,可以使用WHENEVER OSERROR这个命令,该命令的语法如下:

WHENEVER OSERROR {EXIT [SUCCESS|FAILURE|n|variable|:BindVariable]
[COMMIT|ROLLBACK] | CONTINUE [COMMIT|ROLLBACK|NONE]}


比如在SQL*PLUS中执行以下的一些命令:


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 Release 10.2.0.4.0 - 64bit Production
With the Partitioning, OLAP, Data Mining and Real Application Testing options
$ echo $?
1


另一种是SQL或者PL/SQL执行出错,类似地,可以使用WHENEVER SQLERROR定制SQL*PLUS的行为,该命令的语法如下,具体的例子就不重复了。

WHENEVER SQLERROR {EXIT [SUCCESS|FAILURE|WARNING|n|variable|:BindVariable]
[COMMIT|ROLLBACK] | CONTINUE [COMMIT|ROLLBACK|NONE]}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值