Hello ppl,
Oké, ik zoek dus een manier om achter de fout code te komen. Meer uitleg hieronder:
Heb voor alle duidelijk te maken met Oracle10g server en SQL*Plus.
Ik wil dus een manier hebben om erachter te komen welke error code (vorm van -xxxxx) achter die 'others' zit. En dan eventueel zelf een exception erachter te schrijven.
De meest bekende fouten zoals no_data_found (+100) en too_many_rows (-1422) kennen we wel, maar wat als er nu dus een error in die 'others' valt, hoe kom je dan achter die code (en eventueel de error tekst)???
EDIT:
Beetje schaamte aangezien ik even mijn PL/SQL leerboek erbij nam en daar staat het wel in (dacht van niet).
Het is dus:
Oké, ik zoek dus een manier om achter de fout code te komen. Meer uitleg hieronder:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| DECLARE stock_price NUMBER := 9.73; net_earnings NUMBER := 0; pe_ratio NUMBER; BEGIN -- Calculation might cause division-by-zero error. pe_ratio := stock_price / net_earnings; DBMS_OUTPUT.PUT_LINE('Price/earnings ratio = ' || pe_ratio); EXCEPTION -- exception handlers begin -- Only one of the WHEN blocks is executed. WHEN ZERO_DIVIDE THEN -- handles 'division by zero' error DBMS_OUTPUT.PUT_LINE('Company must have had zero earnings.'); pe_ratio := NULL; WHEN OTHERS THEN -- handles all other errors DBMS_OUTPUT.PUT_LINE('Some other kind of error occurred.'); pe_ratio := NULL; END; -- exception handlers and block end here / |
Heb voor alle duidelijk te maken met Oracle10g server en SQL*Plus.
Ik wil dus een manier hebben om erachter te komen welke error code (vorm van -xxxxx) achter die 'others' zit. En dan eventueel zelf een exception erachter te schrijven.
De meest bekende fouten zoals no_data_found (+100) en too_many_rows (-1422) kennen we wel, maar wat als er nu dus een error in die 'others' valt, hoe kom je dan achter die code (en eventueel de error tekst)???
EDIT:
Beetje schaamte aangezien ik even mijn PL/SQL leerboek erbij nam en daar staat het wel in (dacht van niet).
Het is dus:
SQL:
1
2
3
4
5
6
| EXCEPTION WHEN OTHERS THEN err_num := SQLCODE; err_msg := SUBSTR(SQLERRM, 1, 100); DBMS_OUTPUT.PUT_LINE(err_num || ' -- ' || err_msg); END; |
[ Voor 14% gewijzigd door 430xlkod op 16-03-2011 19:20 ]