Käyttämällä RAISERROR kanssa HEITTÄÄ Heittää SQL Server-Järjestelmä Virhe

posted in: Articles | 0

HEITTÄÄ korvaa RAISERROR SQL Server ja se on edullinen menetelmä jatkossa nostaa virheilmoituksia ja työnnä niitä kutsuvan koodin. Heitto on itse asiassa paljon intuitiivisempi kuin RAISERROR sikäli kuin miten koodi vastaa siihen.

heitto luotiin välineeksi, jolla error handling-koodia voidaan paremmin sovittaa nykyisiin ohjelmointikieliin. RAISERROR on ollut olemassa vuodesta 1998, ensimmäinen julkaistiin SQL Server 7.0., THROW oli mukana ensimmäisen kerran SQL Server 2012-pelissä.

RAISERROR on edelleen mukana SQL Serverin nykyisissä versioissa, mutta on huomattavia eroja siinä, miten SQL virtaa, kun RAISERRORIA kutsutaan vs. kun heitto kutsutaan. Erityisesti RAISERROR ei lopeta suorituksen nykyinen menettely, kun taas HEITTÄÄ aina pysähtyy nykyinen menettely ja kulkee virhe jopa soittaa menettelyä.

HEITTÄÄ kuin RAISERROR avulla voit ”nostaa” custom virheitä, mutta se välittömästi lopettaa nykyisen prosessin ja palauttaa error calling-menettelyä.,

heiton avulla voit tehdä lähes kaiken RAISERRORIN salliman, yhtä merkittävää poikkeusta lukuun ottamatta: heitto ei salli SQL Server-järjestelmän virheiden nostamista. Mutta jos sinun täytyy heittää järjestelmän virhe, voit silti tehdä sen käyttämällä RAISERROR TRY LOHKO ja käyttämällä HEITTÄÄ vastaava CATCH heittää järjestelmän virhe.

ESIMERKKI:

–seuraava lausuma aiheuttaa virheen, koska HEITÄ ei voi heittää järjestelmän poikkeukset:
HEITTÄÄ 40655, ’Tietokannan isäntä ei voi palauttaa.,’, 1;

TULOKSET:

Msg 35100, Taso 16, Valtion 10, Rivi 2
Virhe numero 40655 vuonna HEITTÄÄ lausunto on ulkopuolella voimassa oleva alue. Määritä virhenumero voimassa olevalla alueella 50000-2147483647.

Mutta voit kiertää tämän rajoituksen HEITTÄÄ, kun ei voi heittää järjestelmän poikkeuksia käyttämällä sitä yhdessä RAISERROR sisällä TRY/CATCH-lohko:

–Heittää järjestelmän poikkeus käyttämällä RAISERROR ensimmäinen TRY/CATCH-lohkon.,
ALKAA KOKEILLA
TULOSTA Alkaa Kokeilla’;
RAISERROR (40655, 16, 1);
PRINT ’End Try’;
END KOKEILLA,

ALKAA KIINNI
PRINT ’Begin Kiinni / Ennen kuin Heittää Virhe’;
HEITTÄÄ;
PRINT ’Pää Kiinni / Kun Heittää Virhe’;
LOPULTA KIINNI;

PRINT ’Kun Try/Catch’;

TULOKSET:

Alkaa Kokeilla
Alkaa Kiinni / Ennen kuin Heittää Virhe
Msg 40655, Taso 16, Valtio, 1, Linja 3
Tietokanta ’mestari’ ei voi palauttaa.,

Kuten voit nähdä tuloksia, RAISERROR ei lopeta prosessin kulkua, mutta ei voit nostaa järjestelmän virheitä ja HEITÄ ei pysäytä prosessin kulkua ja voit heittää virheet, sinun nostaa kanssa RAISERROR kutsuvan prosessin. Käyttämällä kahta lausumaa yhdessä voit hallita virheilmoituksia ja kun ne palautetaan kutsumusmenettelyyn.

Vastaa

Sähköpostiosoitettasi ei julkaista. Pakolliset kentät on merkitty *