Bonjour,
Je travaille actuellement à passer des triggers RPGLE DB2 vers PL/SQL DB2, et j'étudie la portabilité de PL/SQL DB2 vers PL/SQL Oracle.
J'ai un problème sur le point suivant.
Il arrive souvent que dans mon trigger, je doive faire des requetes sur d'autres tables, du style :
En DB2, si je trouve un enreg, c'est bien, si je n'en trouve pas je m'en contrefout. (Ici les champs :NEW.QHAUTE, :NEW.QPROFO,
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 SELECT QHAUTE, QPROFO, QLARGE INTO :NEW.QHAUTE, :NEW.QPROFO, :NEW.QLARGE FROM GENA20P0 WHERE CENVIR = :NEW.ICONTE AND CCONTE = :NEW.CCONTE;
:NEW.QLARGE ne seront pas rempli epicétou !!)
Mais en Oracle j'ai l'exception NO_DATA_FOUND qui se lève.
Je souhaiterais eviter que cette exception ne se lève.
Certains proposeront de faire un count(*) avant la requête => Ca fonctionne.
D'autres proposeront de gérer l'exception du style
=> Ca fonctionne.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 EXCEPTION WHEN NO_DATA_FOUND THEN wtest := true; END;
Le problème de ces deux solutions est que il faut recherche l'ensemble des requetes des triggers et les modifier une à une.
Appliquer cela à plusieurs centaines de triggers (de quelques centaines de lignes) cela donne un boulot monstrueux.
Or dans mon contexte le temps = argent.
Y aurait il un moyen de "désactiver" cette exception, par exemple en début de trigger de maniere à pouvoir faire une traduction de PL/SQL DB2 vers PL/SQL Oracle plus automatique?
Ps : j'ai déjà réussi à presque automatiser la trad, mais cette exception m’embête un peu.
Partager