Tenho um cursor e preciso criar uma clausula where que seja dinamica conforme a necessidade dos parametros enviados conforme exemplo abaixo:
cursor c_Ordens is
select gbh.Batch_id OrdemId
,gbh.batch_no Ordem
,frh.routing_no Roteiro
,mc.segment1 Classe
,mc.description DescClasse
,to_char(gbh.plan_start_date,'dd/mm/yy hh24:mi:ss') Data_inicio_Planej
from
gme_batch_header gbh
,ic_item_mst iim
,mtl_system_items_b msi
,gme_material_details gme
,FM_rout_hdr frh
,mtl_item_categories mic
,mtl_category_sets mcs
,mtl_categories mc
where frh.routing_id = gbh.routing_id
and gme.batch_id = gbh.batch_id
and gme.item_id = iim.item_id
and gme.line_no = 1 -- indica que é a 1a. linha
and gme.line_type = 1 -- indica que é o produto
and gbh.batch_status = 2 -- Status Pendente
and iim.item_no = msi.segment1
and msi.organization_id = 104
and msi.inventory_item_id = mic.inventory_item_id
and msi.organization_id = mic.organization_id
and mic.category_set_id = mcs.category_set_id
and mcs.structure_id = mc.structure_id
and mic.category_id = mc.category_id
and mcs.category_set_name = 'CLASSE DE PLANEJAMENTO'
&p_where
order by 4,6;
begin
if p_Tipo = 1 Then
p_where := ' and msi.segment1 between '||'80000'||' and '||'99999'||'';
elsif p_Tipo = 2 Then
p_where := ' and mc.segment1 = '||'SA'||'';
p_where := p_where || ' and mc.segment1 = '||'p_Maq1'||';
elsif p_Tipo = 3 Then
p_where := ' and mc.segment1 = '||'1AD'||'';
end if;
end;
tem como fazer isso?
obrigado,
Marlon