INDICATORS SQL

– 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

*

Print Friendly, PDF & Email