[RESOLVIDO] Stored Procedures usando in no whrere

Boa tarde pessoALL tudo bem?

Estou com uma procedure que criei em MSSQL que recebem alguns parâmetros, um desses parâmetros devem ser usados na condição IN no where, como segue:

WHERE RTRIM(A1_COD)+RTRIM(A1_LOJA) IN (@Parametro4)

Quando executo funciona se for apenas um parâmetro:
EXEC minhaprocedure ‘00045001’

Se passar mais de um valor no parâmetro dá erro entendendo que passei mais parâmetros que o esperado:
EXEC minhaprocedure ‘00045001,00045101’

Alguém já passou por isso?

no seu where ponha assim


WHERE (@Parametro4 like '%,' + cast((RTRIM(A1_COD)+RTRIM(A1_LOJA)) as varchar(1000)) + ',%' )

William obrigado pela resposta, não funcionou dessa maneira nem com um registro, segue meu sql completo para vc ver:

[code]PROCEDURE [dbo].[preenchimento_previsao_vendas]

@Parametro1 VARCHAR(8),

@Parametro2 VARCHAR(8),

@Parametro3 VARCHAR(255),

@Parametro4 VARCHAR(255)

AS

SELECT C4_PRODUTO AS C4_PRODUTO , C4_VEND AS C4_VEND, C4_CLIENTE AS C4_CLIENTE, C4_LOJA AS C4_LOJA, A1_NREDUZ AS A1_NREDUZ
FROM SC4010 INNER JOIN SA1010 ON A1_COD=C4_CLIENTE AND A1_LOJA=C4_LOJA
WHERE SC4010.D_E_L_E_T_ = ‘’ AND SA1010.D_E_L_E_T_ = ‘’
and C4_DATA >= @Parametro1 AND C4_DATA <= @Parametro2 AND C4_VEND IN (@Parametro3)
AND RTRIM(C4_CLIENTE)+RTRIM(C4_LOJA) in (@Parametro4)
UNION
(
SELECT D2_COD, A1_VEND, A1_COD, A1_LOJA, A1_NREDUZ
FROM SD2010 INNER JOIN SA1010 ON A1_COD=D2_CLIENTE AND A1_LOJA=D2_LOJA
WHERE SD2010.D_E_L_E_T_ = ‘’ AND SA1010.D_E_L_E_T_ = ‘’
and D2_EMISSAO >= @Parametro1 AND D2_EMISSAO <= @Parametro2 AND A1_VEND IN (@Parametro3)
AND RTRIM(A1_COD)+RTRIM(A1_LOJA) in (@Parametro4)
)
union all
(
select ‘’,’’,’’,’’,'para conferir o q trouxe CODLOJA: '+@Parametro4
)
ORDER BY A1_NREDUZ
[/code]

tem como tu me passar o resultado do select em um excel ou txt delimitado para eu fazer um insert aqui y testar?

pode ser dados fictícios não importa apenas para ter os argumentos y testar,
por que eu uso esse esquema sem problemas

Sempre na medida do possível uso Funções e Procedures no MySQL para várias coisas; até para pegar SALDO ANTERIOR é 10000% mais rápido o que pegar no PHP.

Amanhã te passo sim William.
obrigado mais uma vez

Jailton com certeza é bem melhor…

Bom dia William, te enviei por e-mail.

Obrigado.

Rodrigo Bom Dia…
Não me chego nada…

Puts nem vi … meu e-mail esta mal rss.

Corrigido

Tem algum outro e-mail?

Esse mesmo

willan_fer@hotmail.com

agora ta certo

Enviei, obrigado.

E-mail voltou segue o link para baixar…
www.ojrconsultoria.com.br/temp/procedure_para_william.zip

Obrigado

Ok ja fiz o download

logo te dou um retorno

Rodrigo era apenas a , “Virgula no like %, ,%” esqueci que no meu sistema eu envio com virgulas antes y depois…
testa agora… com isso aqui parece ter funcionado

SELECT C4_PRODUTO AS C4_PRODUTO , C4_VEND AS C4_VEND, C4_CLIENTE AS C4_CLIENTE, C4_LOJA AS C4_LOJA, A1_NREDUZ AS A1_NREDUZ
FROM SC4010 INNER JOIN SA1010 ON A1_COD=C4_CLIENTE AND A1_LOJA=C4_LOJA
WHERE SC4010.D_E_L_E_T_ = '' AND SA1010.D_E_L_E_T_ = '' 
and C4_DATA >= @Parametro1 AND C4_DATA <= @Parametro2 AND C4_VEND IN (@Parametro3) 
-- AND RTRIM(C4_CLIENTE)+RTRIM(C4_LOJA) in (@Parametro4)
AND (@Parametro4 like '%' + cast((RTRIM(C4_CLIENTE)+RTRIM(C4_LOJA)) as varchar(1000)) + '%' )
UNION
(
SELECT D2_COD, A1_VEND, A1_COD, A1_LOJA, A1_NREDUZ
FROM SD2010 INNER JOIN SA1010 ON A1_COD=D2_CLIENTE AND A1_LOJA=D2_LOJA
WHERE SD2010.D_E_L_E_T_ = '' AND SA1010.D_E_L_E_T_ = '' 
and D2_EMISSAO >= @Parametro1 AND D2_EMISSAO <= @Parametro2 AND A1_VEND IN (@Parametro3)
--AND RTRIM(A1_COD)+RTRIM(A1_LOJA) in (@Parametro4)
AND (@Parametro4 like '%' + cast((RTRIM(A1_COD)+RTRIM(A1_LOJA)) as varchar(1000)) + '%' )
)
union all
(
select '','','','','para conferir o q trouxe CODLOJA: '+@Parametro4
)
ORDER BY A1_NREDUZ

Olá William deu certo!!! Você é o cara heim… pelo que vi não tem um assunto que colocam por aqui que você não domine, parabéns!

A única coisa que alterei foi a mesma condição in da linha acima também para passar mais de um vendedor.

Abraços!!

Blz Rodrigo, sem problemas…que bom que funciono.