Problemas com cláusula IN
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
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
Curtidas 0
Respostas
Psergio.p
05/02/2007
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!
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!
GOSTEI 0
Luiz7s
05/02/2007
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...
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...
GOSTEI 0
Psergio.p
05/02/2007
Veja este artigo sobre query´s dinamicas se te ajuda!
https://www.devmedia.com.br/visualizaComponente.aspx?comp=3315&site=2
https://www.devmedia.com.br/visualizaComponente.aspx?comp=3315&site=2
GOSTEI 0