Função pra fazer papel de IN
Fala galera! beleza?
Tenho uma query que utiliza IN. Assim:
Select... WHERE trechos IN ('tre1','tre2','tre3');Agora preciso transformá-la em uma procedure, e em procedure não tem como eu passar o valor desse IN por parâmetro (pelo menos não consegui! rs). por isso estou criando uma função que recebe uma string com todos os trechos, separa ela e retorna em forma de tabela. Assim eu faço um JOIN na minha query ao invés de fazer um IN.
Consegui criar essa função, mas com um probleminha: o último item nunca aparece!
Se eu passo "tre1,tre2,tre3" a função me devolve uma tabela com os 2 primeiros trechos.
A função ta assim:
declare @Ini int
declare @Fim int
declare @item varchar(10)
declare @tmp_itens table(trecho varchar(100))
declare @itens varchar(1000)
set @itens = 'TRE03-01,TRE03-02,TRE03-03'
set @Ini = 0
set @Fim = charindex(',', @itens, @Ini)
while (@Fim > 0)
begin
set @item = substring(@itens, @Ini, @Fim - @Ini)
insert into @tmp_itens (trecho) values (cast(@item as varchar(10)))
set @Ini = charindex(',', @itens, @Ini + 1)+1
set @Fim = charindex(',', @itens, @Ini)
end
Retorno dela:
trecho
----------------------------------------------------------------------------------------------------
TRE03-01
TRE03-02
(2 row(s) affected)
Alguém pode me dar uma força por favor?
VALEW!!
Discussão (2)
Carregando comentários...