L'istruzione try...catch in SQL Server 2005

di Ugo Lattanzi, in SQL Server 2005, UserScript,

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

Visualizza/aggiungi commenti

| Condividi su: Twitter, Facebook, LinkedIn

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