Página 1 de 1

OPERADOR IN (PARAMETRO)

Enviado: Seg, 09 Mai 2016 3:37 pm
por katiacd
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

Re: OPERADOR IN (PARAMETRO)

Enviado: Seg, 09 Mai 2016 4:09 pm
por spernega
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;
/

Re: OPERADOR IN (PARAMETRO)

Enviado: Ter, 10 Mai 2016 8:29 pm
por katiacd
obrigada spernega...


Me ajudou muito...

Re: OPERADOR IN (PARAMETRO)

Enviado: Sáb, 06 Ago 2016 9:58 am
por geovani
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