欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

oracle如何寫異常 oracle函數(shù)異常處理

oracle 用戶自定義異常

--設:要拋出的異常叫做ex_no_data,要判斷是否小于0的變量為:v_data,則:

專注于為中小企業(yè)提供網(wǎng)站制作、做網(wǎng)站服務,電腦端+手機端+微信端的三站合一,更高效的管理,為中小企業(yè)寧安免費做網(wǎng)站提供優(yōu)質的服務。我們立足成都,凝聚了一批互聯(lián)網(wǎng)行業(yè)人才,有力地推動了上千余家企業(yè)的穩(wěn)健成長,幫助中小企業(yè)通過網(wǎng)站建設實現(xiàn)規(guī)模擴充和轉變。

DECLARE

--聲明異常

ex_no_data EXCEPTION; -- Exception to indicate an error condition

v_data NUMBER; -- Variable to hold data

--v_ErrorCode NUMBER; -- Variable to hold the error message code

--v_ErrorText VARCHAR2(200); -- Variable to hold the error message text

BEGIN

--拋出異常

IF v_data 0 THEN --(括號內填拋出異常的條件)

RAISE ex_no_data;

END IF;

--捕捉異常

EXCEPTION

WHEN ex_no_data THEN

dbms_output.put_line(v_data);

--捕捉其他異常,并獲得 捕獲異常的內容

WHEN OTHERS THEN

null;

-- v_ErrorCode := SQLCODE;

-- v_ErrorText := SUBSTR(SQLERRM, 1, 200);

-- 注意這里用SUBSTR 來截取錯誤消息

--dbms_output.put_line(v_ErrorCode || '::'||v_ErrorText);

END;

/

---另可參考我之前的一個帖子:

oracle 存儲過程異常處理

先建一個錯誤跟蹤表

create sequence s_error_id;

CREATE TABLE ERROR_RECORD

(

ERROR_ID NUMBER(10) primary key,

ERROR_CODE NUMBER(10),

ERROR_MSG VARCHAR2(2000),

ERROR_DATE DATE,

ERROR_PROGRAM VARCHAR2(200)

);

--------在過程的例外里向跟蹤表寫入錯誤信息:

create or replace procedure day_task is

v_sqlcode ERROR_RECORD.ERROR_CODE%type;

v_msg ERROR_RECORD.error_msg%type;

begin

------program body

exception when others then

--記錄錯誤信息表

v_sqlcode :=sqlcode;

v_msg :=sqlerrm;

insert into error_record(error_code,error_msg,error_date,error_program)

values (v_sqlcode,v_msg,sysdate,‘day_task’);

end;

oracle存儲過程異常怎么寫

begin??

select?into?......................;

exception??

when?errorException?then??

.................

when?others?then??

..................

end;

oracle 中的 exception when others then 捕獲異常 在db2中怎么寫

db2中類似oracle的異常捕獲寫法:

舉例如下:

CREATE PROCEDURE OUT_LANGUAGE (...,OUT returnCode INTEGER, OUT returnMsg CHAR(32))

-- returnCode 返回執(zhí)行中的的錯誤代碼

-- returnMsg 返回執(zhí)行中的的錯誤描述

SPECIFIC SQL_OUT_LANGUAGE

LANGUAGE SQL

BEGIN

DECLARE SQLCODE INTEGER DEFAULT 0;

DECLARE SQLSTATE CHAR(5) DEFAULT ′00000′;

DECLARE errorLabel CHAR(32) DEFAULT ′′;

......

-- in case of no data found

DECLARE CONTINUE HANDLER FOR NOT FOUND

BEGIN

SET returnCode = SQLCODE;

-- 也可以設置為 SET returnCode = 0; 因為這個DECLARE是為了忽略NOT FOUND的執(zhí)行結果

END;

-- in case of SQL error

DECLARE EXIT HANDLER FOR SQLEXCEPTION

BEGIN

SET returnCode = SQLCODE;

SET returnMsg = errorLabel;

END;

Oracle 存儲過程怎么拋出異常

你說的異常是什么意思?如果是,執(zhí)行中的錯誤,那么可以用“調試”,不過需要有一個系統(tǒng)權限的擁護才能調試,權限好象是什么debug XXXXX。

如果說的是有時執(zhí)行因為這樣那樣的數(shù)據(jù)問題出現(xiàn)的異常,那么一般都是通過exception來拋出異常的,這樣的拋出的異常,你可以自己編代碼,然后輸入一張表內,這樣就可以捕獲異常了。如果1表示沒有主鍵,2表示數(shù)據(jù)超長等等。具體的寫法網(wǎng)上很多,這里就不寫了。

如何處理用戶自定義異常 oracle

當與一個異常錯誤相關的錯誤出現(xiàn)時,就會隱含觸發(fā)該異常錯誤。用戶定義的異常錯誤是通過顯式使用?RAISE?語句來觸發(fā)。當引發(fā)一個異常錯誤時,控制就轉向到?EXCEPTION塊異常錯誤部分,執(zhí)行錯誤處理代碼。

對于這類異常情況的處理,步驟如下:

1、在PL/SQL?塊的定義部分定義異常情況:

異常情況??EXCEPTION;

2、RAISE?異常情況;

3、在PL/SQL?塊的異常情況處理部分對異常情況做出相應的處理。

例:更新指定員工工資,增加100;

DECLARE

v_empno?employees.employee_id%TYPE?:=empno;

no_result??EXCEPTION;

BEGIN

UPDATE?employees?SET?salary?=?salary+100?WHERE?employee_id?=?v_empno;

IF?SQL%NOTFOUND?THEN

RAISE?no_result;

END?IF;

EXCEPTION

WHEN?no_result?THEN?

DBMS_OUTPUT.PUT_LINE('數(shù)據(jù)更新語句失敗了!');

WHEN?OTHERS?THEN

DBMS_OUTPUT.PUT_LINE(SQLCODE||'---'||SQLERRM);

END;

1、彈出錯誤框:

示例代碼:

declare

v_count number;

begin

select count(*) into v_count from dept;

if v_count 10 then

raise_application_error(-20001,'數(shù)量小于10');

end if;

end;

執(zhí)行結果:

2、控制臺顯示:

示例代碼:

declare

v_count number;

my_exp exception;

begin

select count(*) into v_count from dept;

if v_count 10 then

raise my_exp;

end if;

exception

when my_exp then

dbms_output.put_line('數(shù)量小于10');

when others then

dbms_output.put_line('其他異常');

end;

執(zhí)行結果:

PS:ORACLE 用戶自定義異常小例子:

CREATE OR REPLACE PROCEDURE test_Exception_byLeejin

(

ParameterA IN varchar,

ParameterB IN varchar,

ErrorCode OUT varchar --返回值,錯誤編碼

)

AS

/*以下是一些變量的定義*/

V NUMBER;

V nvarchar();

V NUMBER;

APP_EXP EXCEPTION; --自定義異常

BEGIN

ErrorCode :='';

IF (ParameterA=ParameterB) THEN

ErrorCode := 'ParameterA = ParameterB';

RAISE APP_EXP; -- 拋出異常

END IF;

EXCEPTION

WHEN APP_EXP THEN --在處理異常

RAISE_APPLICATION_ERROR(-,ErrorCode);

WHEN OTHERS THEN

RAISE_APPLICATION_ERROR(-,'未知異常');

END;

本文名稱:oracle如何寫異常 oracle函數(shù)異常處理
分享路徑:http://chinadenli.net/article14/hghhde.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供建站公司外貿建站面包屑導航做網(wǎng)站微信公眾號網(wǎng)站策劃

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)頁設計公司