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.
Approfondimenti
I più letti di oggi
- Eseguire una chiamata AJAX per inviare dati al server in Angular 2
- Formati per l'impostazione del colore in CSS3
- .NET Conference Italia 2024 - Milano
- Gestione CSS in Blazor con .NET 9
- build 7712 per #wp7 #mango riservata agli sviluppatori, con refresh dei tool su connect. info su http://aspitalia.com/y6
- oggi a partire dalle 16:00, non perdere #connect. tutto sul futuro di #vs, #azure, #aspnet https://aspit.co/azk