Je travail sur un système qui a plus de 10 ans. Le système d'exploitation est Linux sur une application fait en PRO-C.
Lorsque je Retrograte un programme dans environnement unitaire.
Si j'exécute ce programme le traitement s'effectue correctement. Par contre si je compile le programme sans rien modifier dans le code. Le résultat n'est pas le même.
Lorsque le programme FETCH. Celui-ci retourne aucune rangé. Et pourtant après différent test. Le SQL retourne des rangés mais pas quand le SQL est utilisé dans un FETCH.
Par contre il y a une nuance puisse que c'est les indicateurs SQLCA.SQLERRD qui sont erronée.
EXEMPLE
Si le SQL retourne 27 rangés.
Lors de l'exécution adéquate les indicateur sont
Par contre, durant une exécution qui ne retourne aucune rangé
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SQLCA.SQLERRD[1] = 0 SQLCA.SQLERRD[2] = 27 SQLCA.SQLcode = NULL
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SQLCA.SQLERRD[1] = 27 SQLCA.SQLERRD[2] = 0 SQLCA.SQLcode = NULLLes programmes utilise l'indicateur SQLCA.SQLERRD[2] pour valider si des rangés on été sélectionné par le FETCH
La documentation ORACLE confirme l'indicateur SQLCA.SQLERRD[1] sera utilisé pour le futur et SQLCA.SQLERRD[2] doit contenir le nombre de ranger "FETCHER"Pourquoi le nombre de rangé FETCHER ce retrouve dans SQLCA.SQLERRD[1] et non dans SQLCA.SQLERRD[2]
Partager