有二种办法抛出极度
1.因此PL/SQL运转时外燃机
2.使用RAISE语句
3.调用RAISE_APPLICATION_E兰德XC60ROLacrosse存款和储蓄进程
当数据库或PL/SQL在运行时产生错误时,三个那多少个被PL/SQL运行时引擎自动抛出。至极也能够由此RAISE语句抛出
RAISE exception_name;
显式抛出十分是程序猿管理注明的可怜的习贯用法,但RAISE不限于注明了的可怜,它能够抛出任何别的特别。举个例子,你指望用TIMEOUT_ON_RESOURCE错误检查测量试验新的运作时特别微处理机,你只需轻松的在前后相继中接受下边包车型大巴语句:
RAISE TIMEOUT_ON_RESOUCE;
举个例子下边二个订单输入的例子,若当订单小于仓库储存数量,则抛出万分,况且捕获该极度,管理非常
复制代码 代码如下:
DECLARE
inventory_too_low EXCEPTION;
—其余注明语句
BEGIN
IF order_rec.qty>inventory_rec.qty THEN
RAISE inventory_too_low;
END IF
EXCEPTION
WHEN inventory_too_low THEN
order_rec.staus:=’backordered’;
END;

RAISE_APPLICATION_EHighlanderROENCORE内建函数用于抛出三个丰裕并给那么些授予三个错误号以致错误音信。自定义非常的缺省错误号是+1,缺省音信是User_Defined_Exception。RAISE_APPLICATION_EPAJEROROTucson函数能够在pl/sql程序块的试行部分和特别部分调用,显式抛出带特殊错误号的命名十分。 
Raise_application_error(error_number,message[,true,false]))
错误号的限量是-20,000到-20,999。错误音讯是文本字符串,最多为2048字节。TRUE和FALSE表示是增长(TRUE卡塔尔(قطر‎进错误堆(E奥迪Q5RO酷路泽STACK卡塔尔(قطر‎依然覆盖(overwrite卡塔尔错误堆(FALSE卡塔尔(قطر‎。缺省意况下是FALSE。
平常来讲代码所示:
复制代码 代码如下:
IF product_not_found THEN
RAISE_APPLICATION_ERROR(-20123, ‘Invald product code’, TRUE);
END IF;


当卓殊抛出后,调整无条件转到十分部分,那就表示调节无法重回那多少个产生的职位,当相当被管理和解决后,调控重返到上生龙活虎层实行部分的下一条语句。
复制代码 代码如下:
BEGIN
DECLARE
bad_credit exception;
BEGIN
RAISE bad_credit;
–发生十分,调节转向;
EXCEPTION
WHEN bad_credit THEN
dbms_output.put_line(‘bad_credit’);
END;
–bad_credit万分管理后,调节转到这里
EXCEPTION
WHEN OTHERS THEN
–调节不会从bad_credit非常转到这里
–因为bad_credit已被管理
END;
当相当产生时,在块的个中从不应当特别微机时,调整将转到或传播到上后生可畏层块的可怜处理部分。
BEGIN
DECLARE —内部块开首
bad_credit exception;
BEGIN
RAISE bad_credit;
–发生极其,调整转向;
EXCEPTION
WHEN ZERO_DIVIDE THEN –不能够管理bad_credite异常
dbms_output.put_line(‘divide by zero error’);
END –停止内部块
–调控不可能到达这里,因为非常未有解决;
–极度部分
EXCEPTION
WHEN OTHERS THEN
–由于bad_credit未有清除,调控将转到这里
END;

相关文章