Preciso de uma ajuda: Eu criei um SUB_WHERE dentro da trigger PRE_QUERY do bloco onde quero que traga os dados de consulta de acordo com o que eu jogar nos parâmetros do outro bloco, sendo que essa SUB_WHERE abaixo não está funcionando, preciso saber se está correto?
Exemplo: Eu tenho meu primeiro bloco não basetable com os seguintes parâmetros: Data Início e Data Fim e o segundo bloco já é basetable onde deverá trazer os dados de consulta de acordo com o que eu jogar nos parâmetros acima. Então esse SUB_WHERE abaixo está correto ou tem outra maneira de fazer?
BEGIN
DECLARE
block_id Block := find_block('POOP2');
sub_where VARCHAR2(512);
def_where VARCHAR2(2000);
FUNCTION add_and(
P_WHERE IN VARCHAR2
) RETURN VARCHAR2 IS
BEGIN
IF (nvl(length(P_WHERE),0) !=0)then
RETURN(P_WHERE||'AND');
ELSE
RETURN(P_WHERE);
END IF;
END;
BEGIN
sub_where := NULL;
IF(:BLK_SELETOR.DT_FROM IS NOT NULL)THEN
sub_where := add_and(def_where)||':FFOR_FAT_FORNEC.DT_EMISSAO_FAT_FORNEC';
END IF;
IF(sub_where IS NOT NULL)THEN
def_where := add_and(def_where)||'(SELECT DT_EMISSAO_FAT_FORNEC '||'FROM FFOR_FAT_FORNEC
WHERE (DT_EMISSAO_FAT_FORNEC BETWEEN :BLK_SELETOR.DT_FROM AND :BLK_SELETOR.DT_TO)'||sub_where||')';
END IF;
set_block_property('FFOR_FAT_FORNEC',DEFAULT_WHERE,def_where);
END;
END;
Luana.
