sql >> Database >  >> RDS >> Database

Uitzondering door gebruiker definiëren definiëren met PRAGMA EXCEPTION_INIT

Zoals besproken in de introductie van PL/SQL Exception Handling, zijn er drie manieren om door de gebruiker gedefinieerde uitzonderingen te declareren. Van die drie manieren hebben we de eerste twee manieren al geleerd, namelijk het declareren van een door de gebruiker gedefinieerde uitzondering met behulp van

  1. Verklaring en
  2. Raise_Application_Error-procedure

De enige manier die nu nog moet worden besproken, is het declareren van door de gebruiker gedefinieerde uitzonderingen met behulp van de functie PRAGMA EXCEPTION_INIT in Oracle Database.

Dus in deze PL/SQL-zelfstudie zullen we leren hoe PL/SQL door de gebruiker gedefinieerde uitzondering in Oracle Database te declareren met behulp van de PRAGMA EXCEPTION_INIT-functie.

Wat is PRAGMA EXCEPTION_INIT?

Pragma Exception_Init is een tweedelig statement waarbij het eerste deel bestaat uit het trefwoord PRAGMA en het tweede deel de Exception_Init-aanroep.

PRAGMA-zoekwoord

Een pragma is een compiler-instructie die aangeeft dat de Statements gevolgd door het trefwoord PRAGMA een compiler-instructie is, dit betekent dat de instructie tijdens het compileren wordt verwerkt en niet tijdens de runtime.

PRAGMA Exception_Init

Exception_init helpt u bij het associëren van een uitzonderingsnaam met een Oracle-foutnummer. Met andere woorden, we kunnen zeggen dat je met Exception_Init de uitzondering een naam kunt geven.

Waarom de uitzondering benoemen?

Ja, er is een manier om door de gebruiker gedefinieerde uitzondering te declareren zonder de naam en dat is door de Raise_Exception_Error-procedure te gebruiken. Dit is inderdaad een eenvoudige en gemakkelijke manier, maar zoals we in de vorige zelfstudie hebben geleerd dat we om uitzonderingen zonder naam af te handelen, de uitzonderingshandler OTHERS gebruiken.

Bedenk nu dat je in je project meerdere uitzonderingen hebt en dat ook zonder naam. Om al die uitzonderingen af ​​te handelen, heb je een enkele uitzonderingshandler met de naam OTHERS. In dit geval zal de compiler bij het optreden van een uitzonderingstoestand de foutenstack weergeven die is geproduceerd door de OTHER-handler.

Kunt u zich voorstellen hoe moeilijk het zal zijn om dat deel van uw project te traceren dat de fout veroorzaakt. Om dat deel te traceren, moet je elke regel van je code doorlopen. Dit is alleen maar tijdverspilling.

U kunt al die tijdverspilling besparen door de uitzondering een naam te geven, op die manier kunt u een uitzonderingshandler ontwerpen die specifiek is voor de naam van uw uitzondering en die gemakkelijk te traceren is. Dit is het voordeel van het benoemen van de uitzondering.

Syntaxis van Pragma Exception_Init.

PRAGMA EXCEPTION_INIT (exception_name, error_number);

Voorbeeld:door gebruiker gedefinieerde uitzondering declareren met Pragma Exception_Init

DECLARE
  ex_age    EXCEPTION;
  age       NUMBER    := 17;
  PRAGMA EXCEPTION_INIT(ex_age, -20008);
BEGIN
  IF age<18 THEN
    RAISE_APPLICATION_ERROR(-20008, 'You should be 18 or above for the drinks!');
  END IF;
  
  DBMS_OUTPUT.PUT_LINE('Sure! What would you like to have?');
  
  EXCEPTION WHEN ex_age THEN
    DBMS_OUTPUT.PUT_LINE(SQLERRM);   
END;
/

Ik heb dit voorbeeld in mijn video-tutorial op mijn YouTube-kanaal in detail uitgelegd. Ik zou u willen verzoeken om de tutorial daar te bekijken.

Waarom PRAGMA EXCEPTION_INIT gebruiken met RAISE_APPLICATION_ERROR?

Hoewel het niet verplicht is om PRAGMA EXCEPTION_INIT te gebruiken met de RAISE_APPLICATION_ERROR-procedure, is het meer een persoonlijke voorkeur dan een programmeerregel. Als u een foutbericht met een foutnummer wilt afdrukken, zoals de standaardmanier van Oracle om een ​​fout weer te geven, kunt u het beste de PRAGMA EXCEPTION_INIT gebruiken met de RAISE_APPLICATION_ERROR-procedure.

Maar als u alleen de foutmelding wilt afdrukken en niet het foutnummer, dan kunt u PRAGMAEXCEPTION_INIT gebruiken met de RAISE-instructie.

Dat is de PL/SQL-zelfstudie over het declareren van door de gebruiker gedefinieerde uitzonderingen in Oracle Database met behulp van PRAGMA EXCEPTION_INIT. Hoop dat je iets nieuws hebt geleerd. Als je deze tutorial informatief vindt, deel hem dan op je sociale media. Bedankt en een fijne dag verder!


  1. 3 manieren om het aantal systeemtabellen in een SQL Server-database te tellen

  2. Hoe kan ik de uitvoer van de kolomkoptekst voor een enkele SQL-instructie onderdrukken?

  3. SQLite Sum() vs Total():wat is het verschil?

  4. Hoe een tabel exporteren als CSV met koppen op Postgresql?