FUNCTION Last_Where_Clause
RETURN VARCHAR2
IS
tmp_lstqry VARCHAR2(10000) := :System.Last_Query;
tmp_curblk VARCHAR2(40);
tmp_index NUMBER;
tmp_where VARCHAR2(2000);
BEGIN
/*
** Procura a palavra 'WHERE' no
** texto da última consulta
*/
tmp_index:= INSTR(tmp_lstqry,'WHERE');
/*
** Se achou, retorna a string após a palavra WHERE.
** Lembre-se que pode ter a palavra ORDER BY também!
*/
IF tmp_index > 0 THEN
tmp_where := SUBSTR(tmp_lstqry, tmp_index + 6);
END IF;
RETURN (tmp_where);
EXCEPTION
WHEN OTHERS THEN
RETURN NULL;
END;
Após buscar o WHERE, apenas envie-o para o relatório como parâmetro!