MICROSOFT SQL SERVER: una Stored Procedure tipica

Vediamo una tipica struttura di una stored procedure da poter usare sempre!

Il codice che vedete è stato preparato e testato per Microsoft SQL Server e usato fino alla versione 2016.

 

 

Il seguente è un tipico template di una stored procedure scritta in Transact-SQL* che io uso nei miei sviluppi:

 

USE [MyDB]
GO

SET NOCOUNT ON;

BEGIN TRANSACTION [MyTrans]

    --declare section
    DECLARE @CODICE_ERRORE INTEGER = NULL
    DECLARE @ERRORMESSAGE  NVARCHAR(max) = NULL
    DECLARE @LEVEL NVARCHAR(10) = NULL
    DECLARE @TIMESTAMP DATETIME2 = NULL  
    
    DECLARE @count INTEGER = 0

    DECLARE @curId INTEGER = 0
    
    BEGIN TRY
            
    
        --do operation
        
        DECLARE userCur CURSOR FOR
        SELECT ID 
        FROM dbo.MyTable
        
        OPEN userCur
        FETCH NEXT FROM userCur INTO @curId 


 
        WHILE @@FETCH_STATUS = 0
        BEGIN
            SET @count = @count + 1
            
            UPDATE [dbo]....  this is my query
        
            FETCH NEXT FROM userCur INTO @curId
        END
        
        CLOSE userCur
        DEALLOCATE userCur
        
        COMMIT TRANSACTION [MyTrans];
         
    END TRY
    BEGIN CATCH
        SET @CODICE_ERRORE = @@ERROR
        SET @ERRORMESSAGE  = ERROR_MESSAGE()
        SET @LEVEL = 'ERROR'
        SET @TIMETAMP = GETDATE()


 
        ROLLBACK TRANSACTION [MyTrans];
         PRINT CONVERT(VARCHAR, @TIMETAMP) + ' - ' + @LEVEL + 'RIGA: ' + CAST(ERROR_LINE() as VARCHAR)  + ' ERROR - [' + CAST(@CODICE_ERRORE as VARCHAR) +'] - ' + @ERRORMESSAGE;
        THROW;
    END CATCH
PRINT 'END'

 

In questo esempio si fa uso dei cursori per processare i record necessari.

Nel ciclo while avviene il process vero e proprio.

In caso di errore/eccezione viene gestito un output completo e fatta la rollback.

 

*Transact SQL

Il linguaggio Transact-SQL (o T-SQL) è l'estensione proprietaria del linguaggio SQL sviluppata da Microsoft e viene fornita insieme a Microsoft SQL Server.

Per maggiori informazioni fate riferimento alla guida Microsoft qui.

 

Buon lavoro!

Joomla SEF URLs by Artio