st1\:*{behavior:url(#ieooui) }


Desenvolvedores,

Criei uma função SQL para todos que já tiveram que transformar um comando SQL inteiro em texto(e depois utilizar a função Execute!), pois seu Comando Sql tinha uma cláusula where sendo uma string proveniente de seu Site ou Aplicação.

Essa função recebe dois parametros, sendo o primeiro a string que possui os valores delimitados por um caracter qualquer, e o segundo o próprio caracter que irá separar a primeira String. Os resultados obtidos são exibidos como linhas de uma tabela, o que facilita a manipulação dos mesmos em procedures.

Exemplos de Chamada:

Select * from  dbo.FCT_SLICE_STR( ‘;’, ‘29;4;86;21’)
Select * from  dbo.FCT_SLICE_STR( ‘ e’, ‘Eduardo e Mayara’)
Select * from  dbo.FCT_SLICE_STR( ‘/’, ‘Eduardo/10/Teste/2007’)
Select * from  dbo.FCT_SLICE_STR( ‘**’ , ‘Mais**1**Teste’)

Exemplo de Utilização:

Create Procedure  Sp_upd_clientes
@str_ids varchar(1000)
as
Begin

 update  tb_cliente set fl_avisado = 1 where id_cliente in
 (
    select convert(int, valores) from  dbo.fct_slice_str(,, @str_ids)
 )

End

Código:

Create Function FCT_SLICE_STR (@slicer varchar(50),@string varchar(250)) returns @tb_aux table(valores varchar(250))
--Funcao: corta uma string de acordo com o separador informado
--Desenvolvedor: Eduardo R. Sucena
As
Begin

 Declare @str_to_get varchar(50)
 Declare @cont int
 
 Set @string = @string + @slicer
 Set @cont = len(@string)

 If charindex(@slicer, @string) = 0
 Begin
  insert into @tb_aux
  select @string
 
  return
 End

 While @cont > 0
 Begin
 
  Set @str_to_get = substring(@string, 1, charindex(@slicer, @string) + len(@slicer) - 1)
  Set @string = substring(@string, (charindex(@slicer, @string) + len(@slicer)) , len(@string) - len(@str_to_get))
  Set @cont = len(@string)
 
  Insert into @tb_aux select ltrim(rtrim(replace(@str_to_get, @slicer, )))
 
 End

Return
End


Espero que essa função ajude bastante =)
Abraços a Todos.
Eduardo R. Sucena