Array
(
)

Funcao para Campo Nome em branco

Fernando /@ftremonti
   - 16 dez 2009

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!!!