Rezumat: în acest tutorial, veți învăța cum să utilizați SQL Server RAISERROR
declarație pentru a genera definite de utilizator mesaje de eroare.
dacă dezvoltați o aplicație nouă, ar trebui să utilizați instrucțiunea THROW
.,
SQL Server RAISEERROR declarație de ansamblu
RAISERROR
declarație vă permite de a genera propriul dvs. de mesaje de eroare și de a reveni aceste mesaje înapoi la aplicația folosind același format ca o eroare de sistem sau un mesaj de avertizare generate de SQL Server Database Engine. În plus, instrucțiunea RAISERROR
vă permite să setați un anumit id de mesaj, nivel de severitate și stare pentru mesajele de eroare.,
următoarele ilustrează sintaxa RAISERROR
declarație:
Să examinăm sintaxa RAISERROR
pentru o mai bună înțelegere.
message_id
message_id
este o definite de utilizator un mesaj de eroare de numărul stocat în sys.messages
catalog de vedere.pentru a adăuga un nou număr de mesaj de eroare definit de utilizator, utilizați procedura stocată sp_addmessage
. Un număr de mesaj de eroare definit de utilizator ar trebui să fie mai mare de 50.000., În mod implicit, RAISERROR
declarație foloseste message_id
50.000 de dolari pentru a ridica o eroare.,
următoarea declarație adaugă un mesaj de eroare la sys.messages
vizualizare:
Pentru a verifica introduce, puteți folosi următoarea interogare:
Code language: SQL (Structured Query Language) (sql)
Pentru a utiliza această message_id, executa RAISEERROR
declarație, după cum urmează:
Code language: SQL (Structured Query Language) (sql)
Aici este de ieșire:
Code language: SQL (Structured Query Language) (sql)
Pentru a elimina un mesaj din sys.messages
, utilizați procedura stocată sp_dropmessage
., De exemplu, următoarea declarație șterge mesajul id-50005:
Code language: SQL (Structured Query Language) (sql)
message_text
message_text
este o definite de utilizator mesaj cu formatare ca printf
funcția în C standard library. message_text
poate fi de până la 2.047 de caractere, ultimele 3 caractere sunt rezervate pentru elipsă (…). Dacă message_text
conține 2048 sau mai mult, acesta va fi trunchiat și este căptușit cu o elipsă.,
Când specificați message_text
, RAISERROR
declarație folosește message_id 50000 de a ridica un mesaj de eroare.
următorul exemplu folosește RAISERROR
declarație pentru a ridica o eroare cu un mesaj text:
Code language: SQL (Structured Query Language) (sql)
ieșire va arata astfel:
Code language: SQL (Structured Query Language) (sql)
severitate
nivelul De severitate este un număr întreg între 0 și 25, cu fiecare nivel reprezentând de gravitatea erorii.
Code language: SQL (Structured Query Language) (sql)
stat
statul este un număr întreg de la 0 la 255., Dacă ridicați aceeași eroare definită de utilizator în mai multe locații, puteți utiliza un număr de stare unic pentru fiecare locație pentru a face mai ușor să găsiți care secțiune a codului cauzează Erorile. Pentru majoritatea implementărilor, puteți utiliza 1.
, CU opțiune
opțiune poate fi LOG
, NOWAIT
sau SETERROR
:
-
WITH LOG
busteni de eroare în jurnalul de erori și jurnal aplicație pentru instanță de SQL Server Database Engine., -
WITH NOWAIT
trimite imediat mesajul de eroare către client. -
WITH SETERROR
seteazăERROR_NUMBER
și@@ERROR
valori message_id sau 50000, indiferent de nivelul de severitate.
SQL Server RAISERROR exemple
Să luăm câteva exemple de utilizare RAISERROR
declarație pentru a obține o mai bună înțelegere.,
O) Folosind SQL Server RAISERROR cu ÎNCERCE bloc CATCH exemplu
În acest exemplu, vom folosi RAISERROR
în interiorul unui TRY
bloc pentru că executarea a sari de la asociat CATCH
bloc. În interiorul CATCH
bloc, vom folosi RAISERROR
pentru a reveni la informațiile de eroare care a invocat CATCH
bloc.,
Aici este de ieșire:
Code language: SQL (Structured Query Language) (sql)
B) Folosind SQL Server RAISERROR declarație cu o dinamică mesaj text exemplu
următorul exemplu arată cum să utilizați o variabilă locală pentru a oferi mesaj text pentru un RAISERROR
declarație:
ieșire este după cum urmează:
Code language: SQL (Structured Query Language) (sql)
Când să utilizeze RAISERROR declarație
utilizare RAISERROR
declarație în următoarele scenarii:
- Depanarea Transact-SQL cod.
- returnați mesajele care conțin text variabil.
- examinați valorile datelor.,
- pentru ca executarea să sari de la un
TRY
bloc asociateCATCH
bloc. - returnați informațiile de eroare din blocul
CATCH
către apelanți, fie apelând lot, fie aplicație.
în acest tutorial, veți învăța cum să utilizați SQL Server RAISERROR
declarație pentru a genera mesaje de eroare definite de utilizator.