Problemas com cláusula IN

05/02/2007

0

Bom dia amigos,

Um usuário chegou a mim com uma dúvida que não estou conseguindo resolver... Ele pediu que tornasse possível a execução da sequência abaixo em uma procedure:

declare @var string
set @var = ´1,2,3,4,5´

select * from apf_agencia
where cod_agbco in (@var)

Apesar, de saber que o tipo string não existe coloquei exatamente o que ele requisitou... O campo cod_agbco é numérico (inteiro).

Já tentei diversas idéias, desde converter o campo para varchar e por a variável tb, etc... Quando coloco a variável varchar e converto o campo para varchar tb não retorna nada. Exceto quando tiro todas as vírgulas e deixo somente um número como por exemplo @var=´1´.

Ou seja:

declare @var varchar(10)
set @var = ´1,2,3,4,5´

select * from apf_agencia
where convert(varchar(10),cod_agbco) in (@var)

NÃO RETORNA NADA

Enquanto:

declare @var varchar(10)
set @var = ´1´

select * from apf_agencia
where convert(varchar(10),cod_agbco) in (@var)

RETORNA...

Se alguém souber de algo pra me ajudar ficaria muito grato...

Obrigado,
Luiz Fernando


Luiz7s

Luiz7s

Responder

Posts

05/02/2007

Psergio.p

Caro amigo, a instrução IN deve receber obrigatoriamente uma lista de valores,

Exemplo: IN(1,2,3,4,5) ou IN(´1´,´2´,´3´,´4´,´5´)

Talvez você consega fazer o que está querendo montando dinamicamente a Query pelo sua aplicação!


Responder

06/02/2007

Luiz7s

Hum... então acho que a única saída será concatenar tudo e usar o execute...

Alguém sabe me mostrar como fazer isso? Não tenho mto domínio em SQL... Pior ainda que tenho que fazer a mesma coisa em Sybase...


Responder

06/02/2007

Psergio.p

Veja este artigo sobre query´s dinamicas se te ajuda!

https://www.devmedia.com.br/visualizaComponente.aspx?comp=3315&;site=2


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

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

Aceitar