国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費電子書等14項超值服

開通VIP
Oracle:pl/sql?異常處理之raise
作者:未知    文章來源:網(wǎng)絡(luò)        更新時間:2010-7-1

處理 oracle 系統(tǒng)自動生成系統(tǒng)異常外,可以使用 raise 來手動生成錯誤。

l         Raise exception;

l         Raise package.exception;

l         Raise;

以上是 raise 的三種使用方法。第一種用于生成當(dāng)前程序中定義的異?;蛟?/span> standard 中的系統(tǒng)異常。

       Declare

              Invalid_id exception;

              Id_values varchar(2);

       Begin

              Id_value:=id_for(‘smith’);

              If substr(id_value,1,1)!=’x’

              Then

                     Raise invalid_id;

              End if;

       Exception

              When invalid_id

              Then

                     Dbms_output.put_line(‘this is an invalid id!’);

       End;

這是一個生成自定義異常的例子,當(dāng)然也可以生成系統(tǒng)異常:

       declare

              employee_id_in number;

       Begin

Select employee_id into employee_id_in from employ_list where employee_name=&n;

If employee_id_in=0

Then

       Raise zero_devided;

End if;

       Exception

              When zero_devided

              Then

                     Dbms_output.put_line(‘wrong!’);

       End;

有一些異常是定義在非標(biāo)準(zhǔn)包中的,如 UTL_FILE , DBMS_SQL 以及程序員創(chuàng)建的包中異常??梢允褂?/span> raise 的第二種用法來生成異常。

       If day_overdue(isbn_in, browser_in) > 365

       Then

              Raise overdue_pkg.book_is_lost

       End if;

在最后一種 raise 的形式中,不帶任何參數(shù)。這種情況只出現(xiàn)在希望將當(dāng)前的異常傳到外部程序時。

       Exception

              When no_data_found

              Then

                     Raise;

       End;

 

Pl.sql 使用 raise_application_error 過程來生成一個有具體描述的異常。當(dāng)使用這個過程時,當(dāng)前程序被中止,輸入輸出參數(shù)被置為原先的值,但任何 DML 對數(shù)據(jù)庫所做的改動將被保留,可以在之后用 rollback 命令回滾。下面是該過程的原型:

       Procedure raise_application_error(

       Num binary_integer;

       Msg varchar2;

       Keeperrorstack Boolean default false

)

其中 num 是在 -20999 -20000 之間的任何數(shù)字(但事實上, DBMS_OUPUT DBMS_DESCRIBLE 包使用了 -20005 -20000 的數(shù)字); msg 是小于 2K 個字符的描述語,任何大于 2K 的字符都將被自動丟棄; keeperrorstack 默認(rèn)為 false ,是指清空異常棧,再將當(dāng)前異常入棧,如果指定 true 的話就直接將當(dāng)前異常壓入棧中。

    CREATE OR REPLACE PROCEDURE raise_by_language (code_in IN PLS_INTEGER)

    IS

       l_message error_table.error_string%TYPE;

    BEGIN

       SELECT error_string

         INTO l_message

         FROM error_table, v$nls_parameters v

        WHERE error_number = code_in

          AND string_language  = v.VALUE

          AND v.parameter = 'NLS_LANGUAGE';

 

       RAISE_APPLICATION_ERROR (code_in, l_message);

    END;

本站僅提供存儲服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊舉報。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
pl/sql異常處理初步
全面學(xué)習(xí)ORACLE Scheduler特性(7)使用Events之Scheduler拋出的Events
Oracle的dbms_obfuscation_toolkit加密解密數(shù)據(jù)
配置UltraEdit為Oracle PL/SQL代碼編輯器
oracle存儲過程轉(zhuǎn)達(dá)夢8存儲過程時踩過的坑2(完結(jié)篇)
ORACLE中的異常處理
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點擊這里聯(lián)系客服!

聯(lián)系客服