PDC_REPORT_CreazioneDB/sql/Collaudo/funzioni/dbo_Crea_positionID_v2.sql
2025-06-10 15:29:00 +02:00

34 lines
1.3 KiB
Transact-SQL

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