DECLARE inventory_too_low EXCEPTION; ---其他聲明語句 BEGIN . . IF order_rec.qty>inventory_rec.qty THEN RAISE inventory_too_low; END IF . . EXCEPTION WHEN inventory_too_low THEN order_rec.staus:='backordered'; replenish_inventory(inventory_nbr=> inventory_rec.sku,min_amount=>order_rec.qty-inventory_rec.qty); END; |
EXCEPTION WHEN exception_name THEN Code for handing exception_name [WHEN another_exception THEN Code for handing another_exception] [WHEN others THEN code for handing any other exception.] |
EXCEPTION WHEN inventory_too_low THEN order_rec.staus:='backordered'; replenish_inventory(inventory_nbr=> inventory_rec.sku,min_amount=>order_rec.qty-inventory_rec.qty); WHEN discontinued_item THEN --code for discontinued_item PRocessing WHEN zero_divide THEN --code for zero_divide WHEN OTHERS THEN --code for any other exception END; |
BEGIN DECLARE bad_credit; BEGIN RAISE bad_credit; --發生異常,控制轉向; EXCEPTION WHEN bad_credit THEN dbms_output.put_line('bad_credit'); END; --bad_credit異常處理后,控制轉到這里 EXCEPTION WHEN OTHERS THEN --控制不會從bad_credit異常轉到這里 --因為bad_credit已被處理 END; |
BEGIN DECLARE ---內部塊開始 bad_credit; BEGIN RAISE bad_credit; --發生異常,控制轉向; EXCEPTION WHEN ZERO_DIVIDE THEN --不能處理bad_credite異常 dbms_output.put_line('divide by zero error'); END --結束內部塊 --控制不能到達這里,因為異常沒有解決; --異常部分 EXCEPTION WHEN OTHERS THEN --由于bad_credit沒有解決,控制將轉到這里 END; |
BEGIN executable statements BEGIN today DATE:='SYADATE'; --ERRROR BEGIN --內部塊開始 dbms_output.put_line('this line will not execute'); EXCEPTION WHEN OTHERS THEN --異常不會在這里處理 END;--內部塊結束 EXCEPTION WHEN OTHERS THEN 處理異常 END |
DECLARE order_too_old EXCEPTION; BEGIN RAISE order_too_old; EXCEPTION WHEN order_too_old THEN DECLARE file_handle UTL_FILE.FILE_TYPE; BEGIN --open file file_handle:=UTL_FILE.FOPEN (location=>'/ora01/app/oracle/admin/test/utlsir' ,filename=>'error.log' .open_mode=>'W'); --write error stack UTL_FILE.PUT_LINE(filehandle, DBMS_UTILITY.FORMAT_ERROR_STACK); --write the call stack UTL_FILE.PUT_LINE(filehandle, DBMS_UTILITY.FORMAT_CALL_STACK); --close error log UTL_FILE.FCLOSE(file_handle); RAISE; --re-raise the exception END END |
DECLARE inventory_too_low EXCEPTION; ---其他聲明語句 BEGIN . . IF order_rec.qty>inventory_rec.qty THEN RAISE inventory_too_low; END IF . . EXCEPTION WHEN inventory_too_low THEN order_rec.staus:='backordered'; replenish_inventory(inventory_nbr=> inventory_rec.sku,min_amount=>order_rec.qty-inventory_rec.qty); END; |
EXCEPTION WHEN exception_name THEN Code for handing exception_name [WHEN another_exception THEN Code for handing another_exception] [WHEN others THEN code for handing any other exception.] |
EXCEPTION WHEN inventory_too_low THEN order_rec.staus:='backordered'; replenish_inventory(inventory_nbr=> inventory_rec.sku,min_amount=>order_rec.qty-inventory_rec.qty); WHEN discontinued_item THEN --code for discontinued_item processing WHEN zero_divide THEN --code for zero_divide WHEN OTHERS THEN --code for any other exception END; |
BEGIN DECLARE bad_credit; BEGIN RAISE bad_credit; --發生異常,控制轉向; EXCEPTION WHEN bad_credit THEN dbms_output.put_line('bad_credit'); END; --bad_credit異常處理后,控制轉到這里 EXCEPTION WHEN OTHERS THEN --控制不會從bad_credit異常轉到這里 --因為bad_credit已被處理 END; |
BEGIN DECLARE ---內部塊開始 bad_credit; BEGIN RAISE bad_credit; --發生異常,控制轉向; EXCEPTION WHEN ZERO_DIVIDE THEN --不能處理bad_credite異常 dbms_output.put_line('divide by zero error'); END --結束內部塊 --控制不能到達這里,因為異常沒有解決; --異常部分 EXCEPTION WHEN OTHERS THEN --由于bad_credit沒有解決,控制將轉到這里 END; |
BEGIN executable statements BEGIN today DATE:='SYADATE'; --ERRROR BEGIN --內部塊開始 dbms_output.put_line('this line will not execute'); EXCEPTION WHEN OTHERS THEN --異常不會在這里處理 END;--內部塊結束 EXCEPTION WHEN OTHERS THEN 處理異常 END |
DECLARE order_too_old EXCEPTION; BEGIN RAISE order_too_old; EXCEPTION WHEN order_too_old THEN DECLARE file_handle UTL_FILE.FILE_TYPE; BEGIN --open file file_handle:=UTL_FILE.FOPEN (location=>'/ora01/app/oracle/admin/test/utlsir' ,filename=>'error.log' .open_mode=>'W'); --write error stack UTL_FILE.PUT_LINE(filehandle, DBMS_UTILITY.FORMAT_ERROR_STACK); --write the call stack UTL_FILE.PUT_LINE(filehandle, DBMS_UTILITY.FORMAT_CALL_STACK); --close error log UTL_FILE.FCLOSE(file_handle); RAISE; --re-raise the exception END END |
新聞熱點
疑難解答