CREATE FUNCTION [dbo].[Crea_positionID_v2] ( @TipoProdotto VARCHAR(5)='', @CodInterno VARCHAR(13)='', @CodMAF VARCHAR(13)='', @CodISIN VARCHAR(16)='', @CodSottoprodotto VARCHAR(13)='', @CodiceContratto VARCHAR(11)='', @NumeroPolizza VARCHAR(11)= '', @Conto VARCHAR(12)= '', @Rubricato VARCHAR(4)='', @CustodiaGaranzia VARCHAR(1)='', @Termid VARCHAR(8)='', @Anno DECIMAL(3)=0, @Prog DECIMAL(9)=0 ) RETURNS VARCHAR(123) AS BEGIN -- Questa funzione concatena i dati formando una stringa unica DECLARE @ResultVar VARCHAR(123) DECLARE @AnnoS VARCHAR(3) = RIGHT('000' + CAST(@Anno AS VARCHAR(3)), 3) DECLARE @ProgS VARCHAR(9) = RIGHT('000000000' + CAST(@Prog AS VARCHAR(9)), 9) -- Usa RIGHT invece di REPLICATE per pad-left con zeri SET @Conto = RIGHT('000000000000' + @Conto, 12) SET @Rubricato = RIGHT('000' + @Rubricato, 3) SET @NumeroPolizza = RIGHT('00000000000' + @NumeroPolizza, 11) SET @Termid = RIGHT('00000000' + @Termid, 8) -- CustodiaGaranzia può essere assegnata direttamente SET @CustodiaGaranzia = ISNULL(@CustodiaGaranzia, '0') -- Concatenazione delle stringhe finali SET @ResultVar = ISNULL(@CodiceContratto, 'e') + @Conto + @Rubricato + @CustodiaGaranzia + @NumeroPolizza + @Termid + @AnnoS + @ProgS RETURN @ResultVar END