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 CATCH
Le 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.