我有這樣的代碼:甲骨文錯誤處理
DECLARE
e_not_exist EXCEPTION;
PRAGMA EXCEPTION_INIT(e_not_exist, -942);
car_name VARCHAR2(20);
BEGIN
select name_of_factory into car_name from car where car_id = 1;
dbms_output.put_line(car_name);
EXCEPTION
when e_not_exist then
dbms_output.put_line('Table or view does not exist');
when OTHERS then
dbms_output.put_line(to_char(SQLCODE));
END;
其實,我的表名是汽車,但不是CAR。但是oracle不處理這個異常,並給我一個錯誤ORA-00942:表或視圖不存在。 我該如何處理這個異常?
謝謝。據我瞭解,有編譯和運行時錯誤。如果我知道錯誤編號,如何識別運行時或編譯錯誤? – maks 2010-11-17 19:59:17
它不是基於數字。從這個例子中可以看出,同樣的錯誤(-942)可以是運行時或編譯時基於情況。問題在於,當你使用DECLARE/BEGIN內聯時,很難區分它們。一種選擇是實際創建一個過程,然後執行它。另一個是做你在這裏所做的 - 因爲你正在使用'WHEN OTHERS',所有的運行時異常都會以這種方式被捕獲,所以彈出的即時錯誤將會是編譯時間。 – Dan 2010-11-17 20:07:51