Come impostare il numero di SQLException
-
29-10-2019 - |
Domanda
Sto riscontrando un problema durante l'impostazione di SqlException.Number
Sul mio Stored Proc sto sollevando un errore
--@number = 50001
RAISERROR(@number, 16, 1) -
Dovrei aspettarmi che Error_Number()
debba essere @number
ma ottengo sempre 18054
C'è qualcosa che non va nel mio RAISERROR
?
Soluzione
Controlla la tabella sys.messages per il codice di errore 74601. Se questo è un errore definito dall'utente, deve essere aggiunto nella tabella.
per qualsiasi errore maggiore di 50000 dovrebbe fornire questo output se non trovato.
Msg 18054, Level 16, State 1, Line 1
Error XXXXX, severity 16, state 1 was raised, but no message with that error number was found in sys.messages. If error is larger than 50000, make sure the user-defined message is added using sp_addmessage.
Altri suggerimenti
C'è un piccolo avvertimento: in questo caso non puoi fornire un messaggio da solo. Ma questo può essere aggirato aggiungendo un ulteriore% s nella chiamata sp_addmessage o modificando tutti i messaggi mappati con il proprio modello e fornendo i parametri corretti nella chiamata raiseerror.
Controlla qui per ulteriori informazioni: SQL Server: esegui nuovamente l'eccezione con il numero di eccezione originale
RAISERROR può fare riferimento a un messaggio definito dall'utente archiviato in sys.messages visualizza il catalogo o crea un messaggio in modo dinamico.
Verifica che il tuo messaggio di errore esista o non lo utilizzi:
select * from sys.messages
Se non esiste, utilizza sp_addmessage
per aggiungere messaggi di errore definiti dall'utente e sp_dropmessage
per eliminare i messaggi di errore definiti dall'utente.
per ulteriori informazioni, segui la documentazione di RaiseError .