[Dica] Usando o WHERE da última consulta

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Digamos que você deseja mostrar num relatório exatamente a mesma informação que você acabou de filtrar num bloco. Para isso, use esta pequena função que retorna a cláusula where da última consulta feita. É usado o SYSTEM.LAST_QUERY para buscar todo SQL.

Selecionar tudo

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!
Responder
  • Informação