久久精品国产99国产精品,农村大炕弄老女人,人马配速90分钟,香蕉成人伊视频在线观看

Oracle中的異常處理

在編寫 Oracle 數(shù)據(jù)庫的查詢語句、函數(shù)、存儲(chǔ)過程等一系列代碼時(shí),常常會(huì)遇到各種錯(cuò)誤和異常。這些錯(cuò)誤和異??赡苁怯沙绦虮旧硪鸬?,也可能是由開發(fā)人員自定義的數(shù)據(jù)問題引起的。 捕捉除數(shù)為0的異常

在編寫 Oracle 數(shù)據(jù)庫的查詢語句、函數(shù)、存儲(chǔ)過程等一系列代碼時(shí),常常會(huì)遇到各種錯(cuò)誤和異常。這些錯(cuò)誤和異??赡苁怯沙绦虮旧硪鸬?,也可能是由開發(fā)人員自定義的數(shù)據(jù)問題引起的。

捕捉除數(shù)為0的異常

舉個(gè)例子,如果我們進(jìn)行了一個(gè)除法運(yùn)算,而除數(shù)為0的話,就會(huì)出現(xiàn)除數(shù)為0的異常。例如:

DECLARE
  str1 number : 10;
BEGIN
  str1 : 10/0;
  DBMS_OUTPUT.PUT_LINE(str1);
END;

運(yùn)行上述代碼時(shí),會(huì)提示錯(cuò)誤信息:“第四行除數(shù)等于0”。在四則運(yùn)算中,除數(shù)為0是不允許的,也沒有意義。

利用異常塊進(jìn)行錯(cuò)誤處理

可以使用 EXCEPTION 塊來捕獲這些異常:

EXCEPTION
  WHEN exception1 [or exception2...] THEN
    statement1 [statement12...]
  [ 
    WHEN exception3 [or exception4...] THEN
      statement3 [statement14...]
  ]

在上述的例子中,我們可以將代碼改為:

DECLARE
  str1 number : 10;
BEGIN
  str1 : 10/0;
  DBMS_OUTPUT.PUT_LINE(str1);
  EXCEPTION
    WHEN ZERO_DIVIDE THEN
      DBMS_OUTPUT.PUT_LINE('除數(shù)為0,默認(rèn)用1代替,結(jié)果為:'||10/1);
END;

在以上代碼中,當(dāng)除數(shù)為0時(shí),系統(tǒng)會(huì)自動(dòng)拋出異常,然后被 EXCEPTION 異常塊中的 ZERO_DIVIDE 所捕捉。一旦匹配成功,就會(huì)執(zhí)行對應(yīng)的語句。

Oracle中的異常名稱

Oracle 為每個(gè)錯(cuò)誤提供了一個(gè)錯(cuò)誤編號和對應(yīng)的異常名稱。除了已經(jīng)定義好的常用異常名稱外,還可以通過 SQL 語句查詢來獲取更多的異常名稱。

SELECT * FROM DBA_SOURCE WHERE NAME'STANDARD' AND TEXT LIKE '%EXCEPTION_INIT%';

以上 SQL 查詢語句可以用來獲取更多異常錯(cuò)誤號和名稱。

標(biāo)簽:
主站蜘蛛池模板: 英吉沙县| 井冈山市| 吴桥县| 女性| 凤山县| 峨边| 定日县| 安义县| 乾安县| 宽甸| 肥东县| 墨脱县| 远安县| 定边县| 甘南县| 抚州市| 岱山县| 正阳县| 上林县| 恩施市| 古丈县| 衡南县| 南京市| 孟村| 洛宁县| 尚志市| 淮滨县| 沿河| 慈溪市| 沙雅县| 姜堰市| 商丘市| 开阳县| 石泉县| 秦安县| 昌吉市| 曲靖市| 夏邑县| 永泰县| 涿鹿县| 札达县|