Docstoc

Les17

Document Sample
Les17 Powered By Docstoc
					Déclencheurs d'interrogation




  Copyright © Oracle Corporation, 2002. Tous droits réservés.
                              Objectifs


A la fin de ce chapitre, vous pourrez :
 • expliquer les processus impliqués dans
     l'interrogation d'un bloc de données
 • décrire les déclencheurs d'interrogation ainsi que
     leur portée
 • écrire des déclencheurs pour filtrer les conditions
     d'interrogation
 • écrire des déclencheurs pour compléter les
     résultats d'une interrogation
 • contrôler l'action d'un déclencheur en fonction du
     statut d'interrogation de la Form


            Copyright © Oracle Corporation, 2002. Tous droits réservés.
              Présentation du traitement des
                      interrogations
    Exécution déclencheur Pre-Query
                                                          Abandon de l'interrogation
                                                               en cas d'échec
        Construction SELECT...


         Exécution interrogation

Recherche ligne dans nouvel enregistrement
                                                                       Supprime
                                                               l'enregistrement
   Enregistrement marqué comme valide                             de la mémoire
                                                                 en cas d'échec
   Exécution déclencheur Post-Query

    Validation modifs d'enregistrement


                  Copyright © Oracle Corporation, 2002. Tous droits réservés.
 Instructions SELECT exécutées au cours
     du traitement des interrogations

SELECT       base_column, ..., ROWID
INTO         :base_item, ..., :ROWID
FROM         base_table
WHERE        default_where_clause OR
             onetime_where_clause
 AND         (example_record_conditions)
AND          (query_where_conditions)
ORDER BY     default_order_by_clause |
             query_where_order_by

Légèrement différent pour COUNT


           Copyright © Oracle Corporation, 2002. Tous droits réservés.
                       Clause WHERE


•   Quatre sources pour la clause WHERE :
    – Propriété WHERE clause du bloc
    – Propriété ONETIME_WHERE clause du bloc
    – Enregistrement exemple
    – Boîte de dialogue Query/Where
•   Les clauses WHERE sont combinées par l'opérateur
    AND




           Copyright © Oracle Corporation, 2002. Tous droits réservés.
Propriété ONETIME_WHERE




                            Affiche       Deuxième interrogation
                         initialement        Execute_Query
                 l'interrogation restreinte   non restreinte

Copyright © Oracle Corporation, 2002. Tous droits réservés.
                    Clause ORDER BY


•   Deux sources pour la clause ORDER BY :
    – Propriété ORDER BY clause du bloc
    – Boîte de dialogue Query/Where
•   La deuxième source de la clause ORDER BY
    remplace la première




           Copyright © Oracle Corporation, 2002. Tous droits réservés.
    Ecrire des déclencheurs d'interrogation :
             déclencheur Pre-Query
•     Défini au niveau bloc
•     S'exécute une fois, avant l'exécution de
      l'interrogation


IF  TO_CHAR(:ORDERS.ORDER_ID)||
    TO_CHAR(:ORDERS.CUSTOMER_ID)
IS NULL THEN
    MESSAGE(’You must query by
    Order ID or Customer ID’);
    RAISE form_trigger_failure;
END IF;




              Copyright © Oracle Corporation, 2002. Tous droits réservés.
    Ecrire des déclencheurs d'interrogation :
            déclencheur Post-Query
•     S'exécute pour chaque enregistrement extrait
      (excepté au cours du traitement des tableaux)
•     Utilisé pour remplir des éléments non associés à
      une base de données, ainsi que pour calculer des
      statistiques

SELECT      COUNT(order_id)
INTO        :ORDERS.lineitem_count
FROM        ORDER_ITEMS
WHERE       order_id = :ORDERS.order_id;




             Copyright © Oracle Corporation, 2002. Tous droits réservés.
    Ecrire des déclencheurs d'interrogation :
    utiliser des instructions SELECT dans les
                   déclencheurs
•     Les variables Forms Builder sont précédées de
      deux-points.
•     L'interrogation doit renvoyer une ligne pour
      réussir.
•     Codez des gestionnaires d'exceptions.
•     La clause INTO est obligatoire, avec une variable
      pour chaque colonne ou expression sélectionnée.
•     ORDER BY n'est pas nécessaire.




             Copyright © Oracle Corporation, 2002. Tous droits réservés.
Traitement des interrogations par tableau


•   Réduit le trafic réseau
•   Permet le traitement des interrogations par
    tableau :
    – Activez l'option Array Processing
    – Définissez la propriété Query Array Size
•   Propriété Query Array Size
•   Propriété Query All Records




            Copyright © Oracle Corporation, 2002. Tous droits réservés.
    Coder des déclencheurs pour le mode
                Enter-Query

•   Certains déclencheurs peuvent s'exécuter en
    mode Enter-Query.
•   Définissez la propriété Fire in Enter-Query Mode.
•   Testez le mode au cours de l'exécution avec
    :SYSTEM.MODE
     – NORMAL
     – ENTER-QUERY
     – QUERY




            Copyright © Oracle Corporation, 2002. Tous droits réservés.
     Coder des déclencheurs pour le mode
                 Enter-Query

•    Exemple

    IF :SYSTEM.MODE = 'NORMAL'
    THEN ENTER_QUERY;
    ELSE EXECUTE_QUERY;
    END IF;

•    Certains sous-programmes intégrés sont illégaux.
•    Consultez l'aide en ligne.
•    Vous ne pouvez pas accéder à un autre
     enregistrement dans la Form en cours.



            Copyright © Oracle Corporation, 2002. Tous droits réservés.
 Remplacer le traitement par défaut des
            interrogations
              Autres déclencheurs transactionnels
              pour le traitement des interrogations


Déclencheur                  Sous-programme intégré
                             Do-the-Right-Thing

On-Close

On-Count                    COUNT_QUERY

On-Fetch                    FETCH_RECORDS

Pre-Select

On-Select                    SELECT_RECORDS

Post-Select



               Copyright © Oracle Corporation, 2002. Tous droits réservés.
    Remplacer le traitement par défaut des
               interrogations

•   On-Fetch continue de s'exécuter jusqu'à ce que :
     – Il s'exécute sans exécuter
       CREATE_QUERIED_RECORD.
     – L'interrogation est fermée par l'utilisateur ou par
       ABORT_QUERY.
     – Il génère FORM_TRIGGER_FAILURE.
•   On-Select remplace les phases d'ouverture du
    curseur, d'analyse et d'exécution.




             Copyright © Oracle Corporation, 2002. Tous droits réservés.
      Obtenir des informations sur les
     interrogations lors de l'exécution

•   SYSTEM.MODE
•   SYSTEM.LAST_QUERY
    – Contient des variables attachées (ORD_ID = :1)
      avant SELECT_RECORDS
    – Contient des valeurs réelles (ORD_ID = 102) après
      SELECT_RECORDS




           Copyright © Oracle Corporation, 2002. Tous droits réservés.
      Obtenir des informations sur les
     interrogations lors de l'exécution

•   GET_BLOCK_PROPERTY
    SET_BLOCK_PROPERTY
    – GET et SET :
       DEFAULT_WHERE
       ONETIME_WHERE
       ORDER_BY
       QUERY_ALLOWED
       QUERY_HITS
    – GET seulement :
       QUERY_OPTIONS
       RECORDS_TO_FETCH




          Copyright © Oracle Corporation, 2002. Tous droits réservés.
      Obtenir des informations sur les
     interrogations lors de l'exécution

•   GET_ITEM_PROPERTY
•   SET_ITEM_PROPERTY
    – GET et SET :
      CASE_INSENSITIVE_QUERY
      QUERYABLE
      QUERY_ONLY
    – GET seulement :
      QUERY_LENGTH




          Copyright © Oracle Corporation, 2002. Tous droits réservés.
                             Synthèse
Ce chapitre vous a permis d'apprendre que :
 • le traitement des interrogations inclut les
    étapes suivantes :
    1. le déclencheur Pre-Query s'exécute
    2. l'instruction SELECT est construite
    3. l'interrogation est exécutée
    4. l'enregistrement est extrait dans le bloc
    5. l'enregistrement est marqué comme valide
    6. le déclencheur Post-Query s'exécute
    7. l'élément et l'enregistrement sont validés si ce
       dernier a changé (en raison d'un déclencheur)
    8. les étapes 4 à 7 sont répétées jusqu'à ce que tous
       les enregistrements aient été extraits


           Copyright © Oracle Corporation, 2002. Tous droits réservés.
                                  Synthèse


•   Les déclencheurs d'interrogation, qui doivent être définis au
    niveau bloc ou Form, sont les suivants :
    – Pre-Query : permet de filtrer les conditions d'interrogation
      (définissez les propriétés ONETIME_WHERE ou DEFAULT_WHERE,
      ou affectez des valeurs à utiliser comme critères d'interrogation)
    – Post-Query : permet de compléter les résultats des
      interrogations (remplir des éléments de tables non basées,
      effectuer des calculs)
•   Vous pouvez utiliser des déclencheurs transactionnels pour
    remplacer le traitement par défaut des interrogations.
•   Vous pouvez contrôler l'action des déclencheurs en fonction
    du statut d'interrogation de la Form en examinant les valeurs
    de SYSTEM.MODE : NORMAL, ENTER-QUERY ou QUERY


                Copyright © Oracle Corporation, 2002. Tous droits réservés.
         Présentation de l'exercice 17

Dans cet exercice, vous allez :
 • remplir le nom des clients et des commerciaux
   pour chaque ligne du bloc ORDERS
•   remplir les descriptions de chaque ligne du bloc
    ORDER_ITEMS
•   restreindre l'interrogation sur le bloc
    INVENTORIES uniquement pour la première
    interrogation sur ce bloc
•   désactiver les effets du bouton Exit et modifier un
    radio group en mode Enter-Query
•   ajouter deux cases à cocher afin de permettre les
    interrogations respectant la casse et ayant une
    correspondance parfaite

            Copyright © Oracle Corporation, 2002. Tous droits réservés.

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:2
posted:8/18/2012
language:
pages:21