Accueil du site > Les articles > INDICATORS SQL
Version à imprimer Enregistrer au format PDF

INDICATORS SQL

Monitorer les erreurs SQL sur les requêtes multi-fichiers

mardi 23 novembre 2004, par Serge Gomes Visites  2980

- L’utilisation de OUTER JOIN dans une requête SQL permet de sélectionner tous les enreg de FICHIER1 et les enregistrements correspondants (partie ON de OUTER JOIN)de FICHIER2. Si il n’y a pas de correspondance la requête ne renvoie que les zones de FICHIER1 et des valeurs NULL pour les zones de FICHIER2.

INDICATORS SQL
- Lorsqu’on exécute l’ordre OUTER JOIN dans un curseur, le croisement de valeurs null renvoie un code erreur(SQLCODE -305) et par conséquent le FETCH ne renvoie aucune valeur .
- Il faut (dans le FETCH) utiliser INDICATOR sur toutes les zones du 2ème fichiers qui peuvent renvoyer des valeurs incorrectes (NULL).

       SELECT A.SOC, A.CLI, A.NOM,
       B.AGC, B.ENS FROM SOCIET A LEFT OUTER JOIN
       AGENCE B ON A.SOC = B.SOC

        DEBUT_SQL                            
         + FETCH FILTRE INTO                  
         + :SOCIETE , :CLIENT , :NOM
         + :AGENCE INDICATOR :SQIN01 ,    
         + :ENSEIGNE INDICATOR :SQIN02  
         FIN_SQL                              
         *


- On peu utiliser le même indicateur sur toutes les zones à monitorer, cependant si l’on souhaite un traitement spécifique on peu tester la valeur de SQINxx (si <> 0 alors erreur)

- Pour attribuer une valeur par défaut pour une valeur NULL on utilisera IFNULL() (dans ce cas indicator est inutile).

                                   
          SELECT A.SOC, A.CLI, A.NOM,
         IFNULL(B.AGC,'inconnue'),
         IFNULL(B.ENS,'vide')
         FROM SOCIET A LEFT OUTER JOIN AGENCE B
         ON A.SOC = B.SOC
                                     
         *