none
Função para formatar CPF CNPJ

    Question

  •   Estou criando uma função para formatar CPF e CNPJ, pois guardo essas informações no banco sem formatação. mas quando tento criar esta ocorrendo um erro a função é essa:

     

    Code Snippet

    CREATE FUNCTION GETVL_FORMATAR_CPF_CNPJ(@DOCUMENTO NUMERIC(18,0),@TIPO_DOC INTEGER)
    RETURNS VARCHAR(18)
    AS
    BEGIN

      DECLARE @STDOCUMENTO VARCHAR(18)
      DECLARE @RETORNO     VARCHAR(18)
     
      IF (@TIPO_DOC = 1)
      BEGIN
        SET @STDOCUMENTO = REPLICATE('0',14 - LEN(@DOCUMENTO)) + CONVERT(VARCHAR,@DOCUMENTO)
        SET @RETORNO = SUBSTRING(@STDOCUMENTO,1,2) + '.' + SUBSTRING(@STDOCUMENTO,3,3) + '.' + SUBSTRING(@STDOCUMENTO,6,3) + '/' + SUBSTRING(@STDOCUMENTO,9,4) + '-' + SUBSTRING(@STDOCUMENTO,13,2)
      END
      ELSE
        IF (@TIPO_DOC = 2)
        BEGIN
          SET @STDOCUMENT0 = REPLICATE('0',11-LEN(@DOCUMENTO)) + CONVERT(VARCHAR,@DOCUMENTO)
          SET @RETORNO = SUBSTRING(@STDOCUMENTO,1,3) + '.' + SUBSTRING(@STDOCUMENTO,4,3) + '.' + SUBSTRING(@STDOCUMENTO,7,3) + '-' + SUBSTRING(@STDOCUMENTO,10,2)
        END
    END

     

     

    a função recebe dois parametros, o numero do documento, e o tipo que pode ser 1 para CNPJ e 2 para CPF. quando tento executa-la ocorre esse erro:

     

    Code Snippet

    Server: Msg 137, Level 15, State 1, Procedure GETVL_FORMATAR_CPF_CNPJ, Line 18
    Must declare the variable '@STDOCUMENT0'.

    mailto:'@STDOCUMENT0'">'@STDOCUMENT0'.

    <P< A>align=left> 

     

    o que pode ser, já tenho a variavel declarada e ele mesmo diz que precisoa declarar. Como corrigir isso?

     

    Desde já agradeço a todos pela ajuda.

    Monday, July 30, 2007 3:47 PM

Answers

  •  

    Alexsandre..

     

    na linha: SET @STDOCUMENT0 = REPLICATE('0',11-LEN(@DOCUMENTO)) + CONVERT(VARCHAR,@DOCUMENTO)

    a variável @STDOCUMENT0 está com 0(zero) no final ao invés da letra "o".

     

     

    abraço!

     

    Monday, July 30, 2007 4:32 PM

All replies

  • Alexandre,

     

    No final da sua função, coloque o comando Return para que o SQL Server, retorne o valor para o comando Returns e o mesmo exiba o resultado e feche a função.

     

    Outra possibilidade seria ao invês de criar uma função, criar um procedure.

     

     

     

    Monday, July 30, 2007 4:24 PM
  • Junior, tinha mesmo me esquecido do return, valeu... mas mesmo assim o erro continua... teria o que mais poderia ser?? valeu !!

    Monday, July 30, 2007 4:32 PM
  •  

    Alexsandre..

     

    na linha: SET @STDOCUMENT0 = REPLICATE('0',11-LEN(@DOCUMENTO)) + CONVERT(VARCHAR,@DOCUMENTO)

    a variável @STDOCUMENT0 está com 0(zero) no final ao invés da letra "o".

     

     

    abraço!

     

    Monday, July 30, 2007 4:32 PM
  •  

      Valeu Douglas, era isso mesmo. Os caracteres estavam mesmo muito parecidos não reparei nisso, obrigado pela ajuda. valeu !!
    Monday, July 30, 2007 4:39 PM
  •  

    Alexandre,

     

    Poxa, eu também não consegui ver!!!

     

    Legal, sempre tem alguma coisa atrapalhando!!!

    Monday, July 30, 2007 4:43 PM
  • Alexandre,

     

    Obrigado pelo retorno!!!

    Monday, July 30, 2007 4:45 PM