34 lines
1.3 KiB
Transact-SQL
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 |