oracle存儲拋出異常
『壹』 oracle 存儲過程中出現異常的處理
異常是執行這個存儲過程出的異常吧,那就是說只有執行一次這個存儲過程才會拋一次異常么?如果這樣我建議你可以再寫個存儲過程來調用你這個存儲過程,這樣來記錄異常的次數。然後再進行處理!
『貳』 oracle 存儲過程報錯
oracle 存儲過程的基本語法
1.基本結構
CREATE OR REPLACE PROCEDURE 存儲過程名字
(
參數1 IN NUMBER,
參數2 IN NUMBER
) IS
變數1 INTEGER :=0;
變數2 DATE;
BEGIN
END 存儲過程名字
2.SELECT INTO STATEMENT
將select查詢的結果存入到變數中,可以同時將多個列存儲多個變數中,必須有一條
記錄,否則拋出異常(如果沒有記錄拋出NO_DATA_FOUND)
例子:
BEGIN
SELECT col1,col2 into 變數1,變數2 FROM typestruct where xxx;
EXCEPTION
WHEN NO_DATA_FOUND THEN
xxxx;
END;
...
3.IF 判斷
IF V_TEST=1 THEN
BEGIN
do something
END;
END IF;
4.while 循環
WHILE V_TEST=1 LOOP
BEGIN
XXXX
END;
END LOOP;
5.變數賦值
V_TEST := 123;
6.用for in 使用cursor
...
IS
CURSOR cur IS SELECT * FROM xxx;
BEGIN
FOR cur_result in cur LOOP
BEGIN
V_SUM :=cur_result.列名1+cur_result.列名2
END;
END LOOP;
END;
7.帶參數的cursor
CURSOR C_USER(C_ID NUMBER) IS SELECT NAME FROM USER WHERE TYPEID=C_ID;
OPEN C_USER(變數值);
LOOP
FETCH C_USER INTO V_NAME;
EXIT FETCH C_USER%NOTFOUND;
do something
END LOOP;
CLOSE C_USER;
8.用pl/sql developer debug
連接資料庫後建立一個Test WINDOW
在窗口輸入調用SP的代碼,F9開始debug,CTRL+N單步調試
『叄』 java調用oracle存儲過程拋出Raise_Application_Error("....."); 在java中應該用哪個異常類型捕獲
把異常放到OUT參數里,然後用JAVA取出來就可以了。
『肆』 oracle的存儲過程中如何使得在執行出現異常時程序還可以繼續執行
可能用異常處理
open cur_temp for vc_sql1;
loop
fetch cur_temp
into vc_prcname, vc_prctype;
exit when cur_temp%notfound;
vc_sql2 := '。。。';
begin
execute immediate vc_sql2; --這句代碼有可能會執行出錯,希望在執行出錯時可以忽略該錯誤,繼續往下循環,如何實現?
exception
when others then
end;
end loop;
close cur_temp;
試試這樣行不行。
『伍』 ORACLE怎麼在子存儲過程中拋出異常,父存儲過程捕捉子存儲過程拋出的異常,有沒有例子呀
把子存儲過程中的異常處理去掉,父存儲過程就能捕捉到異常了
『陸』 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 procere 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存儲過程中遇到主鍵沖突會拋出異常還是繼續執行
分情況操作,如果是循環入庫的話,拋異常時判斷是否是主鍵沖突,然後繼續繼續執行下一條繼續進行添加操作,如果是單個數據入庫直接拋異常
『捌』 Oracle 存儲過程怎麼拋出異常
你說的異常是什麼意思?如果是,執行中的錯誤,那麼可以用「調試」,不過需要有一個系統許可權的擁護才能調試,許可權好象是什麼debug XXXXX。
如果說的是有時執行因為這樣那樣的數據問題出現的異常,那麼一般都是通過exception來拋出異常的,這樣的拋出的異常,你可以自己編代碼,然後輸入一張表內,這樣就可以捕獲異常了。如果1表示沒有主鍵,2表示數據超長等等。具體的寫法網上很多,這里就不寫了。
『玖』 oracle存儲過程怎麼報異常
在存儲過程內部利用EXCEPTION語句捕獲和處理異常。
『拾』 oracle存儲過程出現異常後可以繼續執行嗎
這個要看異常捕捉處理程序放在哪,從出現異常到異常處理之間的程序應該是不執行的