complete guide pl sql exception handling with examples
V tej vadnici so razložene obravnave izjem SQL PL in z njimi povezani koncepti, kot so vrste izjem, uporabniško določene in sistemsko določene izjeme, kako ustvariti izjemo itd.:
V PL / SQL Datetime Format od PL / SQL serije , smo se seznanili z nekaterimi koristnimi funkcijami okoli datuma, časovnega žiga in intervala
V tem članku bomo obravnavali obravnavo izjem v PL SQL. Prav tako bomo raziskali prednosti izjem in kako jih povečati.
Začnimo z učenjem !!
Kaj se boste naučili:
Upravljanje izjem PL PL
Napaka ali opozorilni dogodek se imenuje izjema. Do njega pride med izvajanjem programa PL / SQL med izvajanjem. PL / SQL ima mehanizme za obvladovanje teh izjemnih pogojev s pomočjo bloka kode EXCEPTION, kjer je določeno, kako lahko preprečimo stanje napake.
Obstajata dve vrsti izjem. Spodaj so navedeni:
- Uporabniško določene izjeme.
- Sistemsko določene izjeme.
Nekatere priljubljene sistemsko določene izjeme so zmanjkalo je spomina in delitev z ničlo, z imeni, kot sta STORAGE_ERROR in ZERO_DIVIDE. Uporabniško določene izjeme so navedene v paketu, podprogramu ali znotraj odseka za izjavo bloka kode PL / SQL in jim je treba dodeliti imena.
Ko pride do izjeme, se naravni tok izvajanja ustavi, nato pa izvedba kaže na odsek izjeme kode PL / SQL. Medtem ko sistemsko določene izjeme privzeto vržejo, mora uporabniško določene izrecno vrniti ključna beseda RAISE.
Tako ravnanje z izjemami pomaga pri reševanju napak, do katerih pride med izvajanjem časa izvajanja in ne med sestavljanjem programa.
Prednosti ravnanja z izjemami
Prednosti so navedene spodaj:
- Če naša koda nima obravnave izjem, moramo vsakič, ko izvedemo stavek, preveriti napake pri izvajanju.
- Če se izognemo obravnavi izjem v naši kodi, se dejanske napake zamudijo, kar povzroči nekatere druge napake.
- Obravnava izjem omogoča preskakovanje več preverjanj v kodi.
- Omogoča boljšo berljivost kode z izolacijo upravljavcev napak v kodi.
Sintaksa obravnave izjem:
DECLARE <> BEGIN < > EXCEPTION <> WHEN excp1 THEN <> WHEN excp2 THEN <> ........ WHEN others THEN <> END;
Privzeta izjema se izvede z KDAJ drugi potem.
Oglejmo si tabelo, ki je poimenovana DRŽAVLJAN .
SELECT * FROM CITIZEN;
Tabelo CITIZEN smo ustvarili s pomočjo spodnjega stavka SQL.
CREATE TABLE CITIZEN ( ID INT NOT NULL, NAME VARCHAR (15) NOT NULL, AGE INT NOT NULL, PRIMARY KEY (ID) );
V to tabelo vstavite vrednosti s spodaj navedenimi stavki SQL:
INSERT INTO CITIZEN VALUES (1, 'ZAKS', 14); INSERT INTO CITIZEN VALUES (8, 'RANNY', 75); INSERT INTO CITIZEN VALUES (5, 'TOM', 37);
Izvajanje kodiranja z obdelavo izjem:
DECLARE citizen_id citizen.id%type; citizen_name citizen.name%type; citizen_age citizen.age%type := 9; BEGIN SELECT id, name INTO citizen_id, citizen_name FROM citizen WHERE age = citizen_age; DBMS_OUTPUT.PUT_LINE ('Citizen id is: '|| citizen_id); DBMS_OUTPUT.PUT_LINE ('Citizen name is: '|| citizen_name); EXCEPTION WHEN no_data_found THEN dbms_output.put_line ('No citizen detail found'); WHEN others THEN dbms_output.put_line ('Errors'); END; /
Izhod zgornje kode:
kako odpreti swf datoteke v operacijskem sistemu Windows 7
V zgornji kodi, ker v tabeli CITIZEN ni državljanov, starih 9 let, je navedena izjema med izvajanjem.
Povečaj izjemo v PL / SQL
Izjemo lahko razvijalci izrecno navedejo s pomočjo ključne besede RAISE.
Sintaksa za dvig izjem:
DECLARE exception_n EXCEPTION; BEGIN IF condition THEN RAISE exception_n; END IF; EXCEPTION WHEN exception_n THEN <>; END;
Tu je iznimka_n ime izjeme, ki jo dvigujemo. Na ta način lahko dvignemo tako uporabniško določene kot sistemsko določene izjeme.
Uporabniško določena izjema
Razvijalci lahko ustvarijo lastne izjeme in jih uporabijo za obdelavo napak. Ustvarijo se lahko v deklaracijskem delu podprograma in do njih je mogoče dostopati samo znotraj tega podprograma.
Izjemo, ki je ustvarjena na ravni paketa, lahko uporabimo ob vsakem dostopu do paketa. Uporabniško določeno izjemo je mogoče sprožiti z uporabo ključne besede RAISE.
Sintaksa za uporabniško določeno napako je:
DECLARE exception_n EXCEPTION;
Tukaj izjema_n je ime izjeme, ki jo dvigujemo. Tako lahko razglasimo izjemo z navedbo imena, ki mu sledi ključna beseda EXCEPTION. Izjemo je mogoče prijaviti na podoben način, kot so deklarirane spremenljivke. Vendar pa je izjema nepričakovano stanje in ne podatkovna postavka.
Obseg izjem v PL / SQL:
Pravila obsega za izjemo PL / SQL so navedena spodaj:
- Izjeme ni mogoče prijaviti več kot enkrat v istem bloku kode. Toda isto izjemo lahko prijavimo v dveh različnih blokih kode.
- Izjema, prijavljena v bloku kode, je lokalna znotraj tega bloka in globalna za vsak podblok.
- Če v podbloku ponovno razglasimo globalno izjemo, lokalna deklaracija preglasi.
Ponovno si oglejmo tabelo z imenom CITIZEN.
Izvajanje kode z uporabniško določenimi izjemami:
DECLARE firstexception EXCEPTION; j NUMBER; BEGIN FOR j IN (SELECT * FROM CITIZEN) LOOP IF j.ID = 8 THEN RAISE firstexception; END IF; END LOOP; EXCEPTION WHEN firstexception THEN dbms_output.put_line ('Citizen with ID 8 already exist in table.'); END; /
Izhod zgornje kode:
Vnaprej določena izjema
V nasprotju s pravili baze podatkov ali preseganjem sistemsko odvisnega praga se samodejno vrne notranja izjema. Vse te napake imajo enolično številko in vsaka izjema je definirana kot ime. Na primer, PL / SQL vrže vnaprej določeno izjemo NO_DATA_FOUND, ko poizvedba SELECT ne pridobi nobene vrstice.
Vse vnaprej določene izjeme PL / SQL so navedene v paketu STANDARD, ki obravnava okolje PL / SQL.
Izjema | Napaka Oracle | KODA SQL | Opis |
---|---|---|---|
INVALID_NUMBER | ČAS - 01722 | -1722 | Ta izjema se pojavi, če pretvorba v niz znakov v število ne mine, saj niz predstavlja neveljavno številko. |
ACCESS_INTO_NULL | ZDAJ - 06530 | -6530 | Ta izjema se pojavi, če je ničelnemu predmetu naravno dodeljena vrednost. |
CASE_NOT_FOUND | ZDAJ - 06592 | -6592 | Ta izjema se sproži, če ni izbrana nobena možnost v stavku WHEN in če ne obstaja klavzula ELSE. |
COLLECTION_IS_NULL | ZDAJ - 06531 | -6531 | Ta izjema se pojavi, ko koda poskuša uporabiti metode zbiranja, razen EXISTS, za ugnezdeno tabelo ali matriko, ki ni inicializirana. Poviša se lahko tudi, če naša koda poskuša dodeliti vrednosti ugnezdeni tabeli ali nizu, ki ni inicializiran. |
DUP_VAL_ON_INDEX | ČAS - 00001 | -1 | Ta izjema se pojavi, če se podvojene vrednosti poskušajo shraniti v stolpec, ki je omejen z edinstvenim indeksom. |
CURSOR_ALREADY_OPEN | ZDAJ - 06511 | -6511 | Ta izjema se pojavi, če naša koda poskuša odpreti že odprto kazalko. |
INVALID_CURSOR | ČAS - 01001 | -1001 | Ta izjema se pojavi, če poskusimo narediti nekaj operacij s kazalci, ki niso dovoljene. Na primer, poskus zapiranja že zaprte kazalke. |
LOGIN_DENIED | ČAS - 01017 | -1017 | Ta izjema se pojavi, če se je program poskušal prijaviti v bazo podatkov z nepravilnim uporabniškim imenom in geslom. |
NO_DATA_FOUND | ČAS - 01403 | 100 | Ta izjema se sproži, če poizvedba SELECT ne pridobi nobene vrstice. |
NOT_LOGGED_ON | ČAS - 01012 | -1012 | Ta izjema se pojavi, če poskušamo izvesti operacijo baze podatkov, ne da bi se nanjo povezali. |
PROGRAM_ERROR | ČAS - 06501 | -6501 | Ta izjema se pojavi, če je program PL / SQL naletel na notranjo napako. |
ROWTYPE_MISMATCH | ČAS - 06504 | -6504 | Ta izjema se pojavi, če kazalka poskuša vrniti vrednosti spremenljivki z nezdružljivim podatkovnim tipom. |
SELF_IS_NULL | ZDAJ - 30625 | -30625 | Ta izjema se pojavi, če se prikliče metoda člana, ne da bi se inicializirala vrsta objekta. |
STORAGE_ERROR | ZDAJ - 06500 | -6500 | Ta izjema se pojavi, če je programu PL / SQL zmanjkalo pomnilnika ali pa se je med izvajanjem pomnilnik poškodoval. |
TOO_MANY_ROWS | ČAS - 01422 | -1422 | Ta izjema se sproži, če poizvedba SELECT pridobi več vrstic. |
SUBSCRIPT_BEYOND_COUNT | ZDAJ - 06533 | -6533 | Ta izjema se pojavi, če je indeks večji od skupnega števila elementov v zbirki. |
NAROČITE SE NAROČI_OUTSIDE_LIMIT | ZDAJ - 06532 | -6532 | Ta izjema se sproži, če indeks presega prag. |
SYS_INVALID_ROWID | ORA-01410 | -1410 | Ta izjema se pojavi, če pretvorba v niz znakov v univerzalni ID vrstice ne mine, saj niz znakov predstavlja neveljaven ID vrstice. |
TIMEOUT_ON_RESOURCE | ORA-00051 | -51 | Ta izjema se pojavi, če Oracle čaka na vir. |
VALUE_ERROR | ORA-06502 | -6502 | Ta izjema se pojavi, če se v našem programu zgodi matematična napaka, pretvorba ali okrnitev. |
ZERO_DIVIDE | ORA-01476 | -1476 | Ta izjema se pojavi, če poskusimo število deliti z 0. |
Pogosta vprašanja in odgovori
V # 1) Kaj je vnaprej določena izjema v PL / SQL?
Odgovor: PL / SQL samodejno vrže vnaprej določeno izjemo, če program krši pravila baze podatkov.
V # 2) Kaj je PL / SQL obravnava izjem in zakaj je to potrebno?
Odgovor: Napaka ali nepričakovan dogodek v programu se imenuje izjema. Ustavi običajni potek izvajanja programa. V PL / SQL se izjema obravnava znotraj bloka EXCEPTION v kodi in v tem bloku je opisano pravilno ukrepanje proti izjemi.
V # 3) Kaj pomeni ravnanje z izjemami?
Odgovor: Gre za način odzivanja na nepričakovane dogodke, ki se lahko pojavijo med izvajanjem kode.
V # 4) Kateri sta dve obliki obravnave napak?
Odgovor: Vključujeta dve obliki obravnave napak napaka časa prevajanja in napaka med izvajanjem . Napaka med izvajanjem se zgodi med izvajanjem programa zaradi neprimernih podatkov ali logike. Napake v času prevajanja so zajete med prevajanjem naše kode.
V # 5) Kakšna je razlika med napako in izjemo?
Odgovor: Izjeme so incidenti, ki se obravnavajo s pomočjo bloka try / catch in jih je mogoče srečati v času prevajanja in času izvajanja programa. Po drugi strani pa se napake pojavljajo samo v času izvajanja.
Zaključek
V tej vadnici smo podrobno obravnavali nekatere osnovne koncepte PL / SQL, ki so bistvenega pomena za upravljanje izjem v naših programih.
Obravnavali smo naslednje teme, navedene spodaj:
- Izjeme.
- Vrste izjem.
- Nekaj vnaprej določenih izjem.
V naslednji vadnici bomo obravnavali PL / SQL transakcije, koncepte OOPS in številne druge povezane teme.
najboljši brezplačni požarni zid za Windows 10 2018
Priporočeno branje
- Vadnica za ravnanje z izjemami C # s primeri kode
- Java izjeme in obravnava izjem z primeri
- PL SQL paket: Vadnica Oracle PL / SQL Package z primeri
- Obravnava izjem v jeziku C ++
- PL SQL Vadnica za začetnike s primeri | Kaj je PL / SQL
- PL Vodič za zapise SQL SQL s primeri