complete guide pl sql exception handling with examples
In deze tutorial worden de verwerking van PL SQL-uitzonderingen en gerelateerde concepten uitgelegd, zoals soorten uitzonderingen, door de gebruiker gedefinieerde en door het systeem gedefinieerde uitzonderingen, hoe een uitzondering kan worden gemaakt, enz.
In PL / SQL Datetime-indeling van PL / SQL-reeks , hebben we enkele handige functies geleerd rond Datetime, Timestamp en Interval
In dit artikel bespreken we de afhandeling van uitzonderingen in PL SQL. We zullen ook de voordelen van uitzonderingen onderzoeken en hoe we deze kunnen aankaarten.
Laten we beginnen met de lessen !!
Wat je leert:
Afhandeling van PL SQL-uitzonderingen
Een fout of een waarschuwingsgebeurtenis wordt een uitzondering genoemd. Het wordt aangetroffen tijdens de runtime-uitvoering van het PL / SQL-programma. PL / SQL heeft mechanismen om met deze uitzonderlijke omstandigheden om te gaan met behulp van het EXCEPTION-codeblok waarin wordt gedefinieerd hoe de foutconditie kan worden tegengegaan.
Er zijn twee soorten uitzonderingen. Ze zijn hieronder opgesomd:
- Door de gebruiker gedefinieerde uitzonderingen.
- Door het systeem gedefinieerde uitzonderingen.
Enkele van de populaire door het systeem gedefinieerde uitzonderingen zijn uit geheugen en deling door nul, met namen als respectievelijk STORAGE_ERROR en ZERO_DIVIDE. Door de gebruiker gedefinieerde uitzonderingen worden gedeclareerd in een pakket, subprogramma of binnen de declaratiegedeelte van het PL / SQL-codeblok en moeten namen worden toegewezen.
bij fout hervat volgende in qtp
Als er zich een uitzondering voordoet, wordt de natuurlijke uitvoeringsstroom gestopt en verwijst de uitvoering naar het uitzonderingsgedeelte van de PL / SQL-code. Hoewel de door het systeem gedefinieerde uitzonderingen standaard worden gegenereerd, moeten de door de gebruiker gedefinieerde uitzonderingen expliciet worden gegenereerd door het RAISE-sleutelwoord.
Het afhandelen van uitzonderingen helpt dus om de fouten op te lossen die optreden tijdens de uitvoering van de runtime en niet tijdens het compileren van het programma.
Voordelen van het afhandelen van uitzonderingen
De voordelen zijn hieronder opgesomd:
- Als onze code geen uitzonderingsafhandeling heeft, moeten we elke keer dat we een instructie uitvoeren, fouten in de uitvoering verifiëren.
- Als we het afhandelen van uitzonderingen in onze code vermijden, worden de daadwerkelijke fouten gemist, wat aanleiding geeft tot enkele andere fouten.
- Door het afhandelen van uitzonderingen kunnen meerdere verificaties in de code worden overgeslagen.
- Het zorgt voor een betere leesbaarheid van de code door de foutbehandelaars in de code te isoleren.
Syntaxis voor het afhandelen van uitzonderingen:
De standaarduitzondering wordt uitgevoerd met WANNEER anderen DAN.
Laten we eens kijken naar een tabel met een naam INWONER
We hebben de CITIZEN-tabel gemaakt met behulp van de onderstaande SQL-instructie.
Voeg waarden in deze tabel in met onderstaande SQL-instructies:
Codering implementatie met afhandeling van uitzonderingen:
De output van de bovenstaande code:
In de bovenstaande code, aangezien er geen burgers met de leeftijd van 9 in de CITIZEN-tabel zijn, wordt een looptijduitzondering opgeworpen.
de twee belangrijkste items die in de integratietest worden getest, zijn de interfaces en de verwachte resultaten.
Uitzondering verhogen in PL / SQL
Een uitzondering kan expliciet worden gemaakt door de ontwikkelaars met behulp van het trefwoord RAISE.
De syntaxis voor het verhogen van uitzonderingen:
Hier is exception_n de naam van de uitzondering die we aan de orde stellen. Op deze manier kunnen we zowel door de gebruiker gedefinieerde als door het systeem gedefinieerde uitzonderingen aan de orde stellen.
Door gebruiker gedefinieerde uitzondering
De ontwikkelaars kunnen hun eigen uitzonderingen maken en deze gebruiken voor het afhandelen van fouten. Ze kunnen worden aangemaakt in het declaratiegedeelte van een subprogramma en zijn alleen toegankelijk binnen dat subprogramma.
Een uitzondering die op pakketniveau wordt gemaakt, kan worden gebruikt wanneer het pakket wordt geopend. Een door de gebruiker gedefinieerde uitzondering kan worden veroorzaakt door het trefwoord RAISE te gebruiken.
De syntaxis voor een door de gebruiker gedefinieerde fout is:
Hier de uitzondering_n is de naam van de uitzondering die we aan de orde stellen. We kunnen dus een uitzondering declareren door een naam te geven gevolgd door het trefwoord EXCEPTION. Een uitzondering kan op een vergelijkbare manier worden gedeclareerd zoals variabelen worden gedeclareerd. Een uitzondering is echter een onverwachte toestand en geen gegevensitem.
Uitzonderingsbereik in PL / SQL:
De regels voor het bereik voor PL / SQL-uitzondering worden hieronder vermeld:
- Een uitzondering kan niet meer dan één keer in hetzelfde codeblok worden gedeclareerd. Maar we kunnen dezelfde uitzondering declareren in twee verschillende codeblokken.
- Een uitzondering die binnen een codeblok wordt gedeclareerd, is lokaal binnen dat blok en globaal voor elk subblok.
- Als we opnieuw een globale uitzondering binnen een subblok declareren, heeft de lokale declaratie voorrang.
Laten we opnieuw een tabel bekijken die CITIZEN heet.
Code-implementatie met door de gebruiker gedefinieerde uitzonderingen:
De output van de bovenstaande code:
Vooraf gedefinieerde uitzondering
Als de databaseregels worden overtreden of de systeemafhankelijke drempel wordt overschreden, wordt automatisch een interne uitzondering gegenereerd. Al deze fouten hebben een uniek nummer en elke uitzondering wordt als een naam gedefinieerd. Bijvoorbeeld, PL / SQL genereert NO_DATA_FOUND vooraf gedefinieerde uitzondering wanneer een SELECT-query geen rijen ophaalt.
Alle vooraf gedefinieerde uitzonderingen van PL / SQL worden gedeclareerd in het STANDARD-pakket dat zich bezighoudt met de PL / SQL-omgeving.
Uitzondering | Oracle-fout | SQL-CODE | Omschrijving |
---|---|---|---|
ONGELDIG NUMMER | TIJD - 01722 | -1722 | Deze uitzondering treedt op als de conversie naar een tekenreeks naar een getal niet doorgaat, aangezien de tekenreeks een ongeldig getal vertegenwoordigt. |
ACCESS_INTO_NULL | NU - 06530 | -6530 | Deze uitzondering treedt op als een null-object op natuurlijke wijze een waarde krijgt toegewezen. |
CASE_NOT_FOUND | NU - 06592 | -6592 | Deze uitzondering treedt op als geen van de opties in de WHEN-clausule is gekozen en er geen ELSE-clausule bestaat. |
COLLECTION_IS_NULL | NU - 06531 | -6531 | Deze uitzondering doet zich voor wanneer de code probeert om verzamelingsmethoden toe te passen, behalve EXISTS, op een geneste tabel of varray die niet is geïnitialiseerd. Het kan ook worden verhoogd als onze code probeert waarden toe te wijzen aan een geneste tabel of varray die niet is geïnitialiseerd. |
DUP_VAL_ON_INDEX | TIJD - 00001 | -1 | Deze uitzondering doet zich voor als wordt geprobeerd dubbele waarden op te slaan in een kolom die wordt beperkt door een unieke index. |
CURSOR_ALREADY_OPEN | NU - 06511 | -6511 | Deze uitzondering treedt op als onze code probeert een reeds geopende cursor te openen. |
INVALID_CURSOR | TIJD - 01001 | -1001 | Deze uitzondering doet zich voor als we proberen om bepaalde bewerkingen op cursors uit te voeren die niet zijn toegestaan. U probeert bijvoorbeeld een reeds gesloten cursor te sluiten. |
LOGIN_DENIED | TIJD - 01017 | -1017 | Deze uitzondering doet zich voor als het programma probeert in te loggen op de database met een onjuiste gebruikersnaam en wachtwoord. |
GEEN DATA GEVONDEN | TIJD - 01403 | 100 | Deze uitzondering treedt op als een SELECT-query geen rijen ophaalt. |
NOT_LOGGED_ON | TIJD - 01012 | -1012 | Deze uitzondering treedt op als we proberen een databasebewerking uit te voeren zonder er verbinding mee te maken. |
PROGRAM_ERROR | TIJD - 06501 | -6501 | Deze uitzondering doet zich voor als het PL / SQL-programma een interne fout heeft aangetroffen. |
ROWTYPE_MISMATCH | TIJD - 06504 | -6504 | Deze uitzondering doet zich voor als een cursor probeert waarden terug te sturen naar een variabele met een incompatibel gegevenstype. |
SELF_IS_NULL | NU - 30625 | -30625 | Deze uitzondering treedt op als een lidmethode wordt aangeroepen zonder het objecttype te initialiseren. |
STORAGE_ERROR | NU - 06500 | -6500 | Deze uitzondering treedt op als het PL / SQL-programma onvoldoende geheugen heeft of het geheugen beschadigd is geraakt tijdens de uitvoering. |
TOO_MANY_ROWS | TIJD - 01422 | -1422 | Deze uitzondering treedt op als een SELECT-query meerdere rijen ophaalt. |
SUBSCRIPT_BEYOND_COUNT | NU - 06533 | -6533 | Deze uitzondering treedt op als een subscript meer is dan het totale aantal elementen in de verzameling. |
SUBSCRIPT_OUTSIDE_LIMIT | NU - 06532 | -6532 | Deze uitzondering treedt op als een subscript buiten het drempelbereik valt. |
SYS_INVALID_ROWID | ORA-01410 | -1410 | Deze uitzondering doet zich voor als de conversie naar een tekenreeks naar een universele rij-ID niet doorgaat, aangezien de tekenreeks een ongeldige rij-ID vertegenwoordigt. |
TIMEOUT_ON_RESOURCE | ORA-00051 | -51 | Deze uitzondering doet zich voor als Oracle op een bron wacht. |
VALUE_ERROR | ORA-06502 | -6502 | Deze uitzondering doet zich voor als een wiskundige conversie- of afkappingsfout optreedt in ons programma. |
ZERO_DIVIDE | ORA-01476 | -1476 | Deze uitzondering treedt op als we proberen een getal door 0 te delen. |
Veelgestelde vragen en antwoorden
V # 1) Wat is een vooraf gedefinieerde uitzondering in PL / SQL?
Antwoord: Een vooraf gedefinieerde uitzondering wordt automatisch gegenereerd door PL / SQL als een programma de regels van de database schendt.
V # 2) Wat is de afhandeling van PL / SQL-uitzonderingen en waarom is dit nodig?
beste gratis software om pc-prestaties te optimaliseren
Antwoord: Een fout of onverwachte gebeurtenis in het programma wordt een uitzondering genoemd. Het stopt de normale uitvoeringsstroom van het programma. In PL / SQL wordt de uitzondering afgehandeld in een EXCEPTION-blok in de code en de juiste actie tegen de uitzondering wordt binnen dat blok beschreven.
V # 3) Wat wordt bedoeld met het afhandelen van uitzonderingen?
Antwoord: Het is de methode om te reageren op onverwachte gebeurtenissen die kunnen optreden tijdens het uitvoeren van de code.
V # 4) Wat zijn de twee vormen van foutafhandeling?
Antwoord: De twee vormen van foutafhandeling omvatten compilatietijd fout en looptijdfout De runtime-fout treedt op tijdens de uitvoering van het programma vanwege onjuiste gegevens of logica. De compileerfouten worden opgevangen tijdens het compileren van onze code.
V # 5) Wat is het verschil tussen fout en uitzondering?
Antwoord: Uitzonderingen zijn incidenten die worden afgehandeld met behulp van het try / catch-blok en die kunnen worden aangetroffen in zowel de compilatietijd als de runtime van de uitvoering van het programma. De fouten worden daarentegen alleen tijdens de uitvoering aangetroffen.
Gevolgtrekking
In deze tutorial hebben we enkele basisconcepten van PL / SQL in detail besproken die essentieel zijn voor het beheren van de uitzonderingen in onze programma's.
We hebben de volgende onderwerpen behandeld:
- Uitzonderingen.
- Soorten uitzonderingen.
- Enkele voorgedefinieerde uitzonderingen.
In de volgende tutorial zullen we de PL / SQL-transacties, OOPS-concepten en nog veel meer gerelateerde onderwerpen bespreken.
Aanbevolen literatuur
- C # Tutorial voor het afhandelen van uitzonderingen met codevoorbeelden
- Java-uitzonderingen en het afhandelen van uitzonderingen met voorbeelden
- PL SQL-pakket: Oracle PL / SQL-pakket zelfstudie met voorbeelden
- Afhandeling van uitzonderingen in C ++
- PL SQL-zelfstudie voor beginners met voorbeelden | Wat is PL / SQL
- PL SQL Records-zelfstudie met voorbeelden