SQL Server 2005 implementa un sistema di gestione delle eccezioni molto simile a quello presente nel .NET Framework.
Possiamo quindi usare l'istruzione try...catch all'interno di una nostra stored procedure, in modo da ottimizzare il codice.
A differenza di C#, in T-SQL il blocco try deve essere sempre seguito da un'istruzione catch e non è presente il finally. Il blocco di codice seguente mostra come utilizzare l'istruzione:
BEGIN TRANSACTION
BEGIN TRY
INSERT INTO [Aspitalia.Test].[dbo].[TemporaryTable]
(
[TempID],
[Description],
[DateValue]
)
VALUES
(
NEWID(),
@Description,
GETDATE()
)
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SELECT
-- Restituisce il numero identificativo dell'errore
ERROR_NUMBER() ErrorNumber,
-- Restituisce la gravità dell'errore
ERROR_SEVERITY() ErrorSeverity,
-- Restituisce il numero di contento dell'errore
ERROR_STATE() ErrorState,
-- Restituisce il nome della stored che ha causato l'errore
ERROR_PROCEDURE() ErrorProcedure,
-- Restituisce il numero di riga che ha causato l'errore
ERROR_LINE() ErrorLine,
-- Restituisce il messaggio di errore, completo dei parametri
-- inviati alla stored
ERROR_MESSAGE() Error_Message
ROLLBACK TRANSACTION
END CATCHLe istruzioni ERROR_NUMBER, ERROR_SEVERITY, ERROR-STATE, ERROR_PROCEDURE e ERROR_LINE restituiscono NULL se invocati fuori dal contesto del catch, mentre ERROR_SEVERITY restituisce valori superiori a 10 che non causano l'interruzione della connessione al database.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.


