Összefoglalás: ebben a bemutatóban megtudhatja, hogyan kell használni az SQL Server RAISERROR
nyilatkozatot generálni felhasználó által definiált hibaüzenetek.
ha új alkalmazást fejleszt ki, akkor a THROW
nyilatkozatot kell használnia.,
SQL Server RAISEERROR statement overview
The RAISERROR
utasítás lehetővé teszi, hogy létrehoz a saját hibaüzenetek és vissza ezeket az üzeneteket vissza az alkalmazás segítségével ugyanazt a formátumot, mint a rendszer hiba vagy figyelmeztető üzenet által generált SQL Server Database Engine. Ezenkívül aRAISERROR
utasítás lehetővé teszi egy adott üzenetazonosító, súlyossági szint és állapot beállítását a hibaüzenetekhez.,
az alábbiak szemléltetik a RAISERROR
utasítás szintaxisát:
vizsgáljuk meg a RAISERROR
szintaxisát a jobb megértés érdekében.
message_id
a message_id
a sys.messages
katalógus nézetben tárolt, felhasználó által definiált hibaüzenet.
új felhasználó által definiált hibaüzenet-szám hozzáadásához a tárolt eljárást használja sp_addmessage
. A felhasználó által definiált hibaüzenet számának 50 000-nél nagyobbnak kell lennie., Alapértelmezés szerint aRAISERROR
utasítás amessage_id
50,000 értéket használja a hiba felvetésére.,
a következő utasítás egyéni hibaüzenetet ad a sys.messages
nézethez:
a Beszúrás ellenőrzéséhez a következő lekérdezést használja:
Code language: SQL (Structured Query Language) (sql)
a message_id használatához hajtsa végre a RAISEERROR
nyilatkozatot az alábbiak szerint:/p>
Code language: SQL (Structured Query Language) (sql)
itt van a kimenet:
egy üzenet eltávolításához a sys.messages
, akkor használja a tárolt eljárássp_dropmessage
., Például a következő utasítás törli az 50005-ös üzenetazonosítót:
Code language: SQL (Structured Query Language) (sql)
message_text
The message_text
egy felhasználó által definiált üzenet formázással, mint például a printf
függvény A C standard könyvtárban. A message_text
lehet akár 2047 karakter, 3 utolsó karakter van fenntartva ellipszis ( … ). Ha a message_text
legalább 2048-at tartalmaz, akkor csonka lesz és ellipszissel van bélelve.,
amessage_text
megadásakor aRAISERROR
utasítás message_id 50000-et használ a hibaüzenet megjelenítéséhez.
a következő példa a RAISERROR
állítást, hogy egy hibaüzenet szöveg:
Code language: SQL (Structured Query Language) (sql)
a kimenet így fog kinézni:
Code language: SQL (Structured Query Language) (sql)
súlyossági szint egész szám 0 és 25 között, minden szint a hiba súlyosságát jelzi.
Code language: SQL (Structured Query Language) (sql)
állapot
az állapot 0-tól 255-ig terjedő egész szám., Ha több helyen is ugyanazt a felhasználó által definiált hibát emeli ki, akkor minden egyes helyhez egyedi állapotszámot használhat, hogy megkönnyítse annak megállapítását, hogy a kód melyik része okozza a hibákat. A legtöbb megvalósítás, akkor 1.
A
opció lehet LOG
, NOWAIT
, vagy :
-
WITH LOG
naplózza a hibát a HIBANAPLÓBAN és az alkalmazásnaplóban az SQL Server adatbázis motor példányában., -
WITH NOWAIT
azonnal elküldi a hibaüzenetet az ügyfélnek. -
WITH SETERROR
beállítja aERROR_NUMBER
és@@ERROR
értékeket message_id vagy 50000 értékre, súlyossági szinttől függetlenül.
SQL Server RAISERROR példák
Vegyünk néhány példát a RAISERROR
utasítás használatára a jobb megértés érdekében.,
A) SQL Server RAISERROR használatával try CATCH block példa
ebben a példában a RAISERROR
a TRY
blokkot használjuk, hogy a végrehajtás a társított CATCH
blokkra ugorjon. A CATCH
blokkon belül a RAISERROR
hibainformációkat használjuk a CATCH
blokkra hivatkozó hibainformációk visszaadásához.,
Itt a kimeneti:
Code language: SQL (Structured Query Language) (sql)
B) az SQL Server RAISERROR nyilatkozat dinamikus üzenet szöveges példa
A következő példa azt mutatja be, hogyan kell használni egy helyi változó biztosítani az üzenet szövegét egy RAISERROR
nyilatkozat:
A kimenet a következőképpen:
Code language: SQL (Structured Query Language) (sql)
Mikor kell használni RAISERROR nyilatkozatot
használja a RAISERROR
nyilatkozat az alábbi esetekben:
- Hibaelhárítás Transact-SQL-kódot.
- változó szöveget tartalmazó üzenetek visszaküldése.
- vizsgálja meg az adatok értékeit.,
- a végrehajtás a
TRY
blokkból a társítottCATCH
blokkba ugrik. - vissza hiba információ a
CATCH
blokk a hívók, akár hívás tétel vagy alkalmazás.
ebben az oktatóanyagban megtudhatja, hogyan kell használni az SQL Server RAISERROR
nyilatkozatot a felhasználó által definiált hibaüzenetek létrehozásához.