ORACLE REISE_APPLICATION_ERROR -funksjonen

ORACLE REISE_APPLICATION_ERROR -funksjonen
Når det gjelder utvikling, er det alltid rom for feil, enten det er en applikasjonsfeil eller en brukerrelatert feil. Som utvikler må du forutse hvor en feil kan oppstå og iverksette tiltak på forhånd. Vanlig kjent som feilhåndtering, kan denne prosessen tillate at applikasjonen din kan kjøres jevnt selv når det oppstår en feil uten å avslutte for tidlig.

I denne artikkelen vil du lære om en av feilhåndteringsprosedyrene i Oracle-databasen kalt REISE_APPLICATION_ERROR.

ORACLE REISE_APPLICATION_ERROR PROSEDYRE

Raise_application_error i Oracle er en lagret prosedyre som lar deg heve de brukerdefinerte feilmeldingene.

Når du jobber med Oracle -databasen, kan du ha kommet over en feilmelding som den i følgende:

[42000] [904] ORA-00904: "Hei": Ugyldig identifikator

Denne typen feil er kjent som en databasemotorfeil. Det er definert i Oracle -databasen og reist når det oppstår en gitt feil.

Ved å bruke prosedyren REISE_APPLICATION_ERROR, lar Oracle oss definere våre tilpassede meldinger med en spesifikk feilkode og melding.

Dette kan være veldig nyttig når en spesifikk feil oppstår og du ønsker å varsle brukeren med en beskrivende feilmelding. Dette betyr at du ikke vil ha fjernet feil unntak uten uttalelse om hva som skjedde.

Prosedyre syntaks og parametere

Følgende kodebit etablerer syntaks for REISE_APPLICATION_ERROR PROSEDYRE:

heve_applikasjon_error (
feil_nummer,
beskjed,
[True | FALSK]
);

Prosedyren består av tre hovedparametere:

  1. Error_number - Denne parameteren representerer en spesifikk heltallverdi som er kartlagt til en feilkode. Verdien av denne parameteren varierer fra -20000 til -20999.
  2. Melding - Dette er en strengverdi som betegner den brukerdefinerte feilmeldingen som skal vises for brukeren. Verdien av meldingsparameteren har en lengde på opptil 70 byte.
  3. KeeRorstack - Denne parameteren er en boolsk verdi som avgjør om feilstabelen skal bevares. Som standard opprettholder ikke prosedyren feilstabelen.

Merk: Å bevare feilstabelen betyr at feilen legges til serien med tidligere feil. Hvis stabelen ikke er bevart, erstatter den nye feilmeldingen alle de tidligere feilene.

Følgende er noen viktige punkter å merke seg for prosedyren REISE_APPLICATION_ERROR:

  1. Databasemotoren stopper automatisk og stopper utførelsen av overordnet blokkering når den møter REISE_APPLICATION_ERROR Lagret prosedyre.
  2. Prosedyren tvinger en tilbakevending for alle operasjoner som er utført til ut- og ut -parametere.
  3. Funksjonen REISE_APPLICATION_ERROR PROSEDYRE Rollback påvirker ikke de globale datastrukturene som databaseobjekter. Imidlertid, hvis du ønsker å utføre en tilbakevending på slike gjenstander, må du ringe Rollback -operasjonen eksplisitt.

Eksempel Raise_application_error lagret prosedyrebruk

I dette eksemplet skal vi demonstrere hvordan du bruker prosedyren for reis_application_error ved bruk av HR -skjemaet.

https: // dokumenter.Oracle.com/cd/b13789_01/server.101/b10771/scripts003.htm

Tenk på følgende oppgitt kildekode:

Opprett eller erstatt prosedyre Check_Commission (
emp_id nummer
)
er
FNAME ansatte.Første_navn%type;
EM -ansatte.E -post%type;
SAL -ansatte.Lønn%type;
Kommisjonsansatte.Commission_pct%type;
begynne
Velg First_Name, E -post, lønn, kommisjon_pct
inn i fname, em, sal, kommisjon
fra ansatte
hvor ansatt_id = emp_id;
Hvis kommisjonen er null da
Raise_application_error (-20002, 'Null Commission Prosentage oppstått!!'|| emp_id);
slutt om;
unntak
Når andre da
Dbms_output.Put_line ('sqlcode:' || sqlcode);
Dbms_output.Put_line ('sqlerrm:' || sqlerrm);
slutt;

Det forrige eksemplet starter med å lage en prosedyre som godtar en ansattes ID. Vi bruker deretter den ansatte til å velge verdiene fra de ansatte. Til slutt bruker vi en IF -uttalelse for å sjekke om kommisjonen for den mottatte raden er null. Hvis det er sant, reiser vi et unntak.

Vi kan ringe prosedyren med Target Employeed ID:

Ring Check_Commission (100);

Produksjon:

SQLCode -438
SQLERRM: SQL0438N -applikasjonen hevet feil eller advarsel med diagnostisk tekst: "Null -kommisjonsprosent oppstått:. SQLSTATE = UD030

Konklusjon

I denne opplæringen lærte du hvordan du bruker REISE_APPLICATION_ERROR Lagret prosedyre for å heve de tilpassede feilmeldingene.