Funcao para Campo Nome em branco

16/12/2009

0

iai galera...

Tenho uma funcao que me retorna o nome do cliente de acordo com qual parte da tabela esta. Por exemplo

Set @Nome = 'LUIS FERNANDO TREMONTI'

dbo.fn_AchaNome( @Nome , 1 ) --me retorna o primeiro nome ...

E assim sucessivamente...

O que esta ocorrendo é que quando informo 0 ( zero ) ele deve me retornar o sobrenome.

Mas... ele retorna em branco...

Um detalhe importante é que ele só retorna em branco quando eu dou um select na tabela utilizando a funcao... Caso declare uma variaval e execute a funcao, funciona normalmente...

Segue abaixo:

Alter function fn_AchaNome( @Nome VarChar( 40 ), @Tipo integer ) returns VarChar(40)
AS
begin

Declare @i       integer
Declare @Pos     integer
Declare @Aux     VarChar( 40 )
Declare @Retorno VarChar(40)

Set @Pos  = 1
Set @i    = 0
Set @Aux  = @Nome

if @tipo >= 1 begin
    while @i < @tipo begin
        Set @Pos     = CharIndex( ' ' , @Aux )
        Set @Retorno = LTrim(RTrim(SubString( @Aux , 1, @Pos )))
        Set @Aux     = SubString( @Aux, @Pos+1 , Len( @Aux )  )
        Set @i = @i+1
        end
        end
    else begin
        Set @Aux     = Reverse( @Aux )
        Set @Pos     = CharIndex( ' ' , @Aux )
        Set @Retorno = LTrim(RTrim(SubString( @Aux , 1, @Pos )))
        Set @Retorno = Reverse( @Retorno )
        end

return @Retorno

end

Select NmCliente, dbo.fn_AchaNome( NmCliente, 0 ) as SobreNome From Cliente --Me retorna em branco


declare @Nome varChar(40)

Set @Nome = 'LUIS FERNANDO TREMONTI'

Select dbo.fn_AchaNome( @Nome , 0 )

me retorna Tremonti

O que pode ser?

Obrigado ... e Abracos!!!
Fernando /@ftremonti

Fernando /@ftremonti

Responder

Que tal ter acesso a um e-book gratuito que vai te ajudar muito nesse momento decisivo?

Ver ebook

Recomendado pra quem ainda não iniciou o estudos.

Eu quero
Ver ebook

Recomendado para quem está passando por dificuldades nessa etapa inicial

Eu quero

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar