Query By Example: Como turbinar suas pesquisas no Oracle EBS

Query By Example Velocímetro

Já ouviu falar de Query By Example (QBE)?

A possibilidade de fazer pesquisas para encontrar os registros que estamos precisando é uma mão na roda, não é mesmo?

Mas será que você está aproveitando todos os recursos disponibilizados pelo Oracle EBS?

O Query By Example permite consultas mais sofisticadas dentro do aplicativo.

Se você utiliza apenas o wildcard “%” nas suas pesquisas, então vai achar interessante.

Ele não é exclusividade do Oracle EBS, veja a definição de Query By Example no Wikipedia:

Query by Example (QBE) is a database query language for relational databases. It was devised by Moshé M. Zloof at IBM Research during the mid-1970s, in parallel to the development of SQL. It is the first graphical query language, using visual tables where the user would enter commands, example elements and conditions. Many graphical front-ends for databases use the ideas from QBE today. Originally limited only for the purpose of retrieving data, QBE was later extended to allow other operations, such as inserts, deletes and updates, as well as creation of temporary tables.

E em um documento da Oracle dentro do contexto de Oracle e-Business Suite:

If you want to retrieve a group of records based on more sophisticated search criteria than what Query Find allows, you can use a feature called query-by-example. As an expert user you can use query-by-example to specify complex search criteria in any of the fields of your current block. The search criteria can include specific values, phrases containing wildcard characters, and/or phrases containing query operators to help you pinpoint the data of interest.

Então, resumindo pra ficar mais fácil, ele permite fazer consultas mais inteligentes.

Nesse artigo vou abordar as possibilidades de pesquisa nas telas desenvolvidas em Forms.

Esses comandos devem ser informados normalmente em modo pesquisa (pressionando F11) e depois pressionando <CTRL> + F11 para executar a pesquisa.

Vamos lá?

Wildcards


Wildcard, que podemos chamar de “curinga” (Com “u” mesmo, Coringa é só o de Gotham), é o mais comum e utilizado por profissionais Oracle EBS.

Pode ser utilizando o “%” ou “_”, veja na tabela abaixo:

QBE: Tabela Wildcards

Query By Example: Query Operators


Aqui que a brincadeira fica interessante, podemos utilizar alguns operadores para deixar nossas consultas mais espertas.

Confira a tabela abaixo:

Query By Example: Tabela Operadores

Para os operadores mais simples (marcados em cinza), basta informar o operador desejado.

Para os outros, precisamos acrescentar o “#” na frente do operador.

Vou mostrar alguns exemplos pra ficar mais fácil:

Exemplo #1:

query-by-example-exemplo1-operador

No cenário acima, eu uso o operador “>=” para retornar apenas registros onde o campo “Relative Amount” é maior ou igual a 20.

Exemplo #2:

QBE: Exemplo 2 Operadores

No cenário acima, eu uso o operador “!=” para retornar todos os registros que são diferentes de 10.

Exemplo #3:

QBE: Exemplo 3 Operadores

No cenário acima, eu uso o BETWEEN para retornar apenas registros onde o campo “Relative Amount” está entre 5 e 10.

Exemplo #4:

QBE: Exemplo 4 Operadores

No cenário acima, eu combino dois operadores: Uso o BETWEEN para retornar apenas registros onde o campo “Relative Amount” está entre 5 e 10 e também que tenham o campo “Date” preenchido.

Como todos os registros estão com o campo “Date” nulo, a minha consulta não retornou registros.

Query Count


Quando o form está em modo pesquisa, se você pressionar a tecla F12, você saberá quantos registros a sua consulta retornará:

QBE: Query Count

Query Repeat


Depois de informar seus filtros e efetuar a pesquisa, caso queira repetir o filtro, basta entrar em modo pesquisa (F11) e depois pressionar F11 novamente.

Conclusão


Esse foi um artigo básico e simples, mas muitas pessoas ainda não conhecem essas funcionalidades do Query By Example.

Eu lembro que antigamente, era possível realizar consultas ainda mais poderosas, utilizando SQL Injection. Era possível usar até queries nos campos do Forms, bastava digitar “:” e a condição em modo pesquisa.

Lembro que na época fiquei doido quando vi isso, realmente era muito útil (Só não fiquei mais doido que o dia em que descobri o Form Personalization).

Mas por questões de segurança, lembro que tinha sido desabilitado por padrão.

Pesquisando aqui no meu Evernote (se ainda não usa, recomendo), achei um note falando sobre isso, a variável de ambiente “FORMS_RESTRICT_ENTER_QUERY” tinha que estar “FALSE” pra funcionar. Mas não sei dizer se ainda é possível habilitar. Também não acho que hoje em dia algum ATG permitiria. Se você que está lendo este artigo for ATG e quiser deixar a sua opinião nos comentários, fique à vontade.

E se você gostou e quer ver mais artigos nessa linha, deixe um comentário, ok?

Também não acharei ruim se você compartilhar com seus amigos 🙂

16 Comentários


  1. Essa dica é excelente! Uso muito o “>” na tela de notas do AR nos campos de data, mas não conhecia alguns dos wildcards. Parabéns pelo blog!

    Responder

  2. Muito bom! Já conhecia esses recursos e realmente são uma mão na roda.
    Lembro de ter passado umas dicas para uns usuários para que pudessem utilizar isso, eles nunca fazem idéia de que isso existe, e ficam super felizes ao descobrirem, haha
    Grande abraço!!!

    Responder

    1. Grande Genilto…

      Isso mesmo, tem muita gente que não sabe… Dá uma grande agilidade mesmo poder filtrar com esses operadores!

      Chegou a brincar com o SQL Injection ou não é do “seu tempo”? hehe

      Abs

      Responder

      1. Brinquei sim, porém somente em páginas web, na época todos os sites com PHP eram vulneráveis. Dava pra fazer login quase que em qualquer coisa, hahaha

        Mas no Oracle nunca havia tentado. Dava também? Hoje sei que não dá!

        Responder

  3. Du, ficou show. Simples e básico, mas nem sempre conhecidos. São super úteis 😉

    Responder

  4. Muito bom exemplo!
    Caiu perfeitamente para uns testes amanhã com alguns usuários!

    Responder

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *