OPERADOR IN (PARAMETRO)

Dúvidas, dicas e truques de SQL, Select, Update, Delete, cláusulas, operações com joins, Funções em SQLs, etc
katiacd
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 09 Mai 2016 3:07 pm
Cristine

Analista Pleno

Prezados boa tarde!

Estou desenvolvendo uma package, de onde será chamado de uma determinada tela.
Onde por exemplo: É selecionado por escolha em um chekbooks, 1,2,3 ou somente 1 ou todos.
Lembro que já desenvolvi no passado pelo sql dinamico, onde utilizava o comando IN (||''PARAMETRO''||). alguém pode me dizer, se atualmente
possui uma forma mais dinamnica de fazer isto, sem ser por sql dimamico?

Exemplos:

Selecionar tudo

Select *
from produtos
where cdg_prodto IN (||'p_parametro'||);

Que seria opcional, selecionado (1,2,3). Quando passo parametro, ele me retorna somente a consulta do 1 e não dos 3 itens selecionadod.

Obrigada.

Katia Cristine
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Boa tarde Katia,

Se vão existir no máximo três parâmetros, talvez seja mais fácil criar parâmetros na procedure.

mais ou menos assim:

Selecionar tudo

Procedure Sp_Produto (v_par1 varchar2,
                      v_par2 varchar2,
                      v_par3 varchar2) is
 --
 cursor c is
  select dsp_prodto
  from   produtos
  where  cdg_prodto in(v_par1, v_par2, v_par3);
 c_r c%rowtype;
begin
 open c;
  loop
   fetch c into c_r;
    exit when c%notfound;
    dbms_output.put_line(c_r.dsp_prodto);
  end loop;
 close c;
end;
/
katiacd
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 37
Registrado em: Seg, 09 Mai 2016 3:07 pm
Cristine

Analista Pleno

obrigada spernega...


Me ajudou muito...
geovani
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 20
Registrado em: Sáb, 06 Ago 2016 9:22 am
Localização: Joinville-SC
Contato:
Geovani Cristofolini
Consultor de Business intelligence
http://useweknow.com

Bom dia Kátia,

Você pode tratar o campo e o parâmetro com vírgulas, da seguinte forma

Selecionar tudo

Select *
from produtos
where '%,'||'p_parametro'||',%' like '%,'||cdg_prodto||',%'
Exemplo:
Se passar o parâmetro '1,2,3' ficará: ',1,2,3,'
Se o o campo cdg_prodto for '2' ficará ',2,'

Ficará assim:

Selecionar tudo

where  %',1,2,3,'%  like %',2,'%
Espero ter ajudado!
Abraço
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante