Introduction:
La data-structure SQLCA permet de récupérer des informations relatives à l’exécution d’un ordre SQL. Il est par exemple possible de récupérer le nombre d’enregistrements mis à jour (SQLER3) ou de détecter la fin d’un fichier (SQLCOD=100).
Le précompileur SQL place automatiquement SQLCA dans les caractéristiques de définition du RPG (Carte D).
En RPG c’est une data structure est générée automatiquement par le pré compilateur.
L’ordre d’inclusion SQLCA ne devrait pas être codé dans le programme source RPG. Il est permis de déclarer SQLCA, le rapport sera accepté, mais il est superflu.
Déclaration explicite :
C/EXEC SQL C+ INCLUDE SQLCA C/END-EXEC |
SQLCA définition pour RPG
ISQLCA DS I* SQL communications area I 1 8 SQLAID I B 9 120SQLABC I B 13 160SQLCOD I B 17 180SQLERL I 19 88 SQLERM I 89 96 SQLERP I 97 120 SQLERR I B 97 1000SQLER1 I B 101 1040SQLER2 I B 105 1080SQLER3 I B 109 1120SQLER4 I B 113 1160SQLER5 I B 117 1200SQLER6 I 121 127 SQLWRN I 121 121 SQLWN0 I 122 122 SQLWN1 I 123 123 SQLWN2 I 124 124 SQLWN3 I 125 125 SQLWN4 I 126 126 SQLWN5 I 127 127 SQLWN6 I 128 128 SQLWN7 I 129 136 SQLEXT I* End of SQLCA |
variables de SQLCA les plus utiles :
Utilisées juste après un ordre SQL.
SQLCODE ou SQLCOD : Permet de détecter les erreurs
— Si SQLCOD = 0 pas d’erreur, Ordre SQL exécuté
— Si SQLCOD > 0 Avertissement (ex SQLCOD = 100 fin de fichier), ordre SQL éxecuté
— Si SQLCOD < 0 Erreur détectée, ordre SQL non exécuté.
SQLERRMC : Texte du message SQL d’erreur si SQLCODE<0.
SQLERRML : longueur significative de SQLERRMC
SQLERRD ou SQLERR : DS de traitements des erreurs et avertissements
SQLERR 6 zones (6 fois 4 octets binaires) de SQLER1 à SQLER6
— SQLER1 contient le n° de message CPFxxxx (si SQLCODE < à 0)
— SQLER2 contient le N° message CPDxxxx (si SQLCODE < à 0)
— SQLER3 contient le nombres d’enregistrements