ved Hjelp av RAISERROR med KAST til Kast en SQL Server-System Error

posted in: Articles | 0

KASTE erstatter RAISERROR i SQL Serveren, og det er den foretrukne metoden går frem for å heve feilmeldinger og presse dem til å ringe kode. KASTE er faktisk mye mer intuitivt enn RAISERROR så langt det er hvordan koden din reagerer på det.

KASTE ble opprettet som et middel til å være mer i samsvar med håndtering av feil kode i dagens programmeringsspråk. RAISERROR har eksistert siden 1998, først utgitt i SQL Server 7.0., KAST var først inkludert i SQL Server-2012.

RAISERROR er fortsatt med i nåværende versjoner av SQL Server, men det er viktige forskjeller mellom hvordan SQL flyter når RAISERROR kalles vs. når KASTE kalles. Spesielt, RAISERROR ikke stoppe kjøring av gjeldende prosedyre, mens KASTE alltid stopper gjeldende prosedyre og går opp feil å kalle prosedyren.

KASTE som RAISERROR gir deg mulighet til å «heve» tilpasset feil, men det stopper umiddelbart den nåværende prosessen og returnerer feil å kalle prosedyren.,

KASTE gir deg mulighet til å gjøre ganske mye alt som RAISERROR tillatt, med ett unntak: KAST ikke tillate deg å øke SQL Server-system feil. Men hvis du trenger å kaste en systemfeil, kan du fortsatt gjøre det ved først å bruke RAISERROR i en PRØVE BLOKKERE og bruke KASTE i tilsvarende CATCH-blokk for å kaste system feil.

EKSEMPEL:

–følgende uttalelse resulterer i en feilmelding, fordi KAST ikke kan kaste system unntak:
KASTE 40655, » Database master kan ikke gjenopprettes.,’, 1;

RESULTATER:

Msg 35100 Nivå 16, State 10, Linje 2
Feil antall 40655 i KAST uttalelse er utenfor det gyldige området. Angi en feil tall i gyldig område på 50 000 til 2147483647.

Men du kan omgå denne begrensningen av KASTE av å ikke være i stand til å kaste system unntak ved å bruke den i forbindelse med RAISERROR innenfor en PRØVE/CATCH-blokk:

–Kaste-systemet unntak ved hjelp av RAISERROR første i en TRY/CATCH-blokk.,
BEGYNNER PRØV
skriv UT ‘Begynner Prøve’;
RAISERROR (40655, 16, 1);
skriv UT ‘- Enden Prøve’;
AVSLUTT PRØV

BEGYNN FANGE
skriv UT ‘Begynner Fange / Før du Kaster Feil’;
KASTE;
skriv UT ‘- Enden Fange / Etter å Kaste Feil’;
AVSLUTT FANGE;

skriv UT ‘Etter Try/Catch’;

RESULTATER:

Begynn Prøv
Begynner Fange / Før du Kaster Feil
Msg 40655 Nivå 16, Tilstand 1, Linje 3
Database «master» kan ikke gjenopprettes.,

Som du kan se i resultatene, RAISERROR ikke stoppe prosessen flyt, men gjør det mulig for deg å heve system feil og KASTE gjør stoppe prosessen flyt og gir deg mulighet til å kaste systemfeil du høyne med RAISERROR til å kalle prosessen. Ved hjelp av de to setninger sammen gjør at du har full kontroll av feilmeldinger og når de er tilbake til å kalle prosedyren.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *