Stored procedure in SQL Server: come eseguirle
MICROSOFT SQL SERVER: una Stored Procedure tipica

MICROSOFT SQL SERVER: una Stored Procedure tipica

Programmazione Web e Database Visite: 2074

Questo articolo parla di come creare una stored procedure in Microsoft SQL Server, vedremo inoltre una tipica struttura di una Stored Procedure da poter usare sempre come template generale!

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 si può usare come base di partenza:

 

USE [MyDB]
GO


SET NOCOUNT ON;
  
    
    BEGIN TRY
                   
        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

        --do your operation here
        
        --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 @TIMESTAMP = GETDATE()
 
        ROLLBACK TRANSACTION [MyTrans];
        PRINT CONVERT(VARCHAR, @TIMESTAMP) + ' - ' + @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!