Oracle Raise_Application_Error Funktion

Oracle Raise Application Error Funktion



När det kommer till utveckling finns det alltid utrymme för fel, oavsett om det är ett applikationsfel eller ett användarrelaterat misstag. Som utvecklare måste du förutse var ett fel kan uppstå och vidta åtgärder i förväg. Allmänt känd som felhantering, kan den här processen tillåta att din applikation körs smidigt även när ett fel uppstår utan att avslutas i förtid.

I den här artikeln kommer du att lära dig om en av felhanteringsprocedurerna i Oracle-databasen som kallas raise_application_error.

Oracle Raise_Application_Error Procedure

raise_application_error i Oracle är en lagrad procedur som gör att du kan höja de användardefinierade felmeddelandena.







När du arbetar med Oracle-databasen kan du ha stött på ett felmeddelande som det i följande:



[ 42 000 ] [ 904 ] ORA-00904: 'HEJ' : ogiltig identifierare

Denna typ av fel kallas ett databasmotorfel. Det definieras i Oracle-databasen och höjs när ett givet fel inträffar.



Genom att använda proceduren raise_application_error tillåter Oracle oss att definiera våra anpassade meddelanden med en specifik felkod och ett specifikt meddelande.





Detta kan vara mycket användbart när ett specifikt fel uppstår och du vill varna användaren med ett beskrivande felmeddelande. Det betyder att du inte kommer att ha ohanterat felundantagen utan något uttalande om vad som hänt.

Procedursyntax och parametrar

Följande kodavsnitt fastställer syntaxen för proceduren raise_application_error:



raise_application_error (
error_number,
meddelande,
[ { SANN | FALSK } ]
) ;

Proceduren består av tre huvudparametrar:

  1. Error_number – Den här parametern representerar ett specifikt heltalsvärde som mappas till en felkod. Värdet på denna parameter sträcker sig från -20000 till -20999.
  2. Meddelande – Detta är ett strängvärde som anger det användardefinierade felmeddelandet som ska visas för användaren. Värdet på meddelandeparametern har en längd på upp till 70 byte.
  3. Keeperrorstack – Den här parametern är ett booleskt värde som avgör om felstacken ska bevaras. Som standard bibehåller inte proceduren felstacken.

OBS! Att bevara felstacken innebär att felet läggs till serien av tidigare fel. Om stacken inte bevaras ersätter det nya felmeddelandet alla tidigare fel.

Följande är några viktiga punkter att notera för proceduren raise_application_error:

  1. Databasmotorn stoppar automatiskt och omedelbart exekveringen av det överordnade blocket när den stöter på den lagrade proceduren raise_application_error.
  2. Proceduren tvingar fram en rollback för alla operationer som gjorts till OUT- och IN OUT-parametrarna.
  3. Återställningsfunktionen för proceduren raise_application_error påverkar inte de globala datastrukturerna som databasobjekt. Men om du vill utföra en återställning på sådana objekt måste du anropa återställningsoperationen uttryckligen.

Exempel Användning av Raise_Application_Error lagrad procedur

I det här exemplet kommer vi att visa hur man använder proceduren raise_application_error med hjälp av HR-schemat.

https://docs.oracle.com/cd/B13789_01/server.101/b10771/scripts003.htm

Tänk på följande källkod:

skapa eller ersätta proceduren check_commission (
emp_id nummer
)
är
fname      EMPLOYEES.FIRST_NAME % typ ;
på         ANSTÄLLDA.EMAIL % typ ;
sal        ANSTÄLLDA.LÖN % typ ;
provision EMPLOYEES.COMMISSION_PCT % typ ;
Börja
Välj FIRST_NAME, EMAIL, LÖN, COMMISSION_PCT
till fname, em, sal, provision
från ANSTÄLLDA
där EMPLOYEE_ID = emp_id;
om provisionen är ogiltig sedan
raise_application_error ( - 20002 , 'Nollprovisionsprocent påträffad!!' || emp_id ) ;
slutet om ;
undantag
när andra sedan
DBMS_OUTPUT.PUT_LINE ( 'SQLCODE:' || SQLCODE ) ;
DBMS_OUTPUT.PUT_LINE ( 'SQLERRM:' || SQLERRM ) ;
slutet;

Det föregående exemplet börjar med att skapa en procedur som accepterar ett anställd-ID. Vi använder sedan medarbetaren för att välja värderingar bland de anställda. Slutligen använder vi en IF-sats för att kontrollera om provisionen för den mottagna raden är null. Om det är sant tar vi upp ett undantag.

Vi kan anropa proceduren med målmedarbetar-id:

ring check_commission ( 100 ) ;

Produktion :

SQLCODE -438
SQLERRM: SQL0438N Applikationen gav fel eller varning med diagnostisk text: 'Noll provisionsprocent påträffad:. SQLSTATE=UD030

Slutsats

I den här handledningen lärde du dig hur du använder den lagrade proceduren raise_application_error för att visa de anpassade felmeddelandena.