SQL - SERVER - FUNÇÕES

Click em Linguagem para conhecer melhor a sintaxe dos comandos

----------------------------------------------------------
-- FUNCAO:
-- retorno um string de 15 caracter de um real com 12 inteiros e 2 decimais + o sinal multiplicado por 100
-- ex: -156.36 = -00000000015636
----------------------------------------------------------
-- apaga a função
IF EXISTS (SELECT NAME,TYPE FROM SYSOBJECTS
           WHERE NAME = 'NUMERO100' AND TYPE = 'FN')
    DROP FUNCTION dbo.NUMERO100
GO
-- teste da função
SELECT dbo.NUMERO100(123.5)
-- uso em uma procedure
SET 
    @RetornoSPGravaSaldo       = dbo.NUMERO100(@NOVO_VLFATURA)
-- cria a função
create  FUNCTION dbo.NUMERO100(@VALOR DECIMAL(18,2))
RETURNS VARCHAR(15) AS
BEGIN
  DECLARE @VLR_INTEIRO        bigint,
           @VLR_DECIMAL        bigint,
           @VLR_STR_INTEIRO    VARCHAR(14),
           @VLR_STR_DECIMAL    VARCHAR(2),
           @SINAL              char(1),
           @VRETORNO           VARCHAR(15)
    SET
            @SINAL             = '0'
    IF @VALOR<0 
    SET 
            @SINAL             = '-'
    -- transforma o valor em positivo
    SET     
            @VALOR             = ABS(@VALOR)
    -- convert o valor em um inteiro
    SET 
            @VLR_INTEIRO       = CAST(@VALOR AS bigint)
    -- pega a parte decimal e converte em um inteiro
    SET 
            @VLR_DECIMAL       = CAST((@VALOR*100-@VLR_INTEIRO*100) AS bigint)
    -- concatena a parte inteira com a decimal
    SELECT 
            @VLR_STR_INTEIRO   = CONVERT(VARCHAR(14),@VLR_INTEIRO)),
            @VLR_STR_DECIMAL   = CONVERT(VARCHAR(2),@VLR_DECIMAL))
    -- tira os espaços a direita e a esquerda
    SELECT 
            @VLR_STR_INTEIRO   = RTRIM(LTRIM(@VLR_INTEIRO)),
            @VLR_STR_DECIMAL   = RTRIM(LTRIM(@VLR_DECIMAL))    
    -- preenche a string de decimais com zeros a esquerta
    SET     
            @VLR_STR_DECIMAL   = replicate('0',
                                    2-len(@VLR_STR_DECIMAL))+
                                        @VLR_STR_DECIMAL  
    SET 
            @VRETORNO          = @VLR_STR_INTEIRO+@VLR_STR_DECIMAL
    SET 
            @VRETORNO          = @SINAL+
                                    replicate('0',
                                        14-len(@VRETORNO))+
                                            @VRETORNO  
-- retorna o valor (string)    
RETURN @VRETORNO
END