Eu tenho ele dessa forma, o que não consigo pensar num logica, é que ele não roda no select, quando coloco uma vez o sum........, já com o v_where, ele até roda, mais traz como string, não os resultado.
Tenho esse código, pronto de outra tela, Que faz a mesma coisa, porém tem um bloco de dados.
E na tela nova que estou fazendo, ele é só para pesquisa, sem mostrar na tela.
Selecionar tudo
for i in 1..length(v_campo) loop
if substr(v_campo,i,1) in ('+','-') then
v_resultado := substr(v_campo,i,1);
elsif substr(v_campo,i,1) = ',' then
if v_where is not null then
v_sinal := ' + ';
end if;
v_where := v_where||v_sinal||'SUM(DECODE(CD_ITEM,'||CHR(39)||V_ITEM||CHR(39)||',DECODE(VL_RESULTADO,'||CHR(39)||V_RESULTADO||CHR(39)||',1,0),0))';
v_item := null;
v_resultado := null;
else
v_item := v_item||substr(v_campo,i,1);
end if;
end loop;
Na tela com bloco de dados
ele termina o código dessa forma.
Selecionar tudo
v_where := '(cd_pessoafisica,nr_sequencial,'||v_num_campo||') in (SELECT distinct CD_PESSOAFISICA,nr_sequencial,'||v_where
||' FROM dados_pf GROUP BY CD_PESSOAFISICA,NR_SEQUENCIAL)';
set_block_property('pessoa_fisica',default_where,v_where);
Espero que tenha entendido, minha cabeça está fazendo voltas com essa tela. :)