-
Triggers SQL & Co
Bonjour,
J'ai mis en place un trigger sur un fichier physique 400
Il se déclenche lors de l'update et de l'insert.
Si dessous sa définition:
CREATE TRIGGER CAP_U03
BEFORE UPDATE ON CAP
REFERENCING OLD ROW AS O
NEW ROW AS N
FOR EACH ROW MODE DB2SQL
BEGIN
DECLARE W_CD CHAR(3);
DECLARE W_NO CHAR(6);
DECLARE W_NC CHAR(6);
DECLARE W_AC CHAR(3);
DECLARE CDRET CHAR(1);
SET W_CD = O.CFCDOGA;
SET W_NO = O.CFNOCA;
SET W_NC = ' ';
SET W_AC = N.CFCDTACHMN;
SET CDRET= ' ';
CALL STRG000RP (W_CD, W_NO, W_NC, W_AC, CDRET);
IF CDRET = '1' THEN
SET N.CFCDTACHMN = 'MEL';
END IF;
IF CDRET = '2' THEN
SET N.CFCDTACHMN = ' ';
END IF;
le prog strg00rp a été créé en procédure séparément.
Le machin fonctionne. Pas de soucis.
Mais que sur l'AS400 !!
Si on utilise un requêteur SQL (standard), hors du 400 on obtiend le message suivant
Error: [SQL0723] Echec du déclencheur SQL CAP_U03 de IKGLFIC_R2. SQLCODE : -444, SQLSTATE : 42724.
SQLState: 09000
ErrorCode: -723
Que fais je ?
Je supprime le trigger ?
Je supprime les requeteurs SQL ?
Je supprime mon collègue qui l'utilise ? (encore que moralement c'est discutable...)
-
Bonjour.
Dans votre trigger, vous appelez un programme dans la liste des biblios.
Essayez de copier le programme dans QGPL pour voir si ça ne fonctionnerait pas mieux ...
-
-
SQLSTATE 42724 : Unable to access an external program used for a user-defined function or a procedure.
Essaie aussi de voir sous quel utilisateur le trigger tourne lorsque tu y accède depuis l'extérieur, et si le profil est autorisé au trigger, au programme, à la bibliothèque, etc ...
Regarde aussi dans DSPLOG si tu trouve quelquechose ...
-
...
J'ai supprimé le collègue et çà va mieux.
:mouarf:
Non, je l'ai gardé, parce que le garçon a finit par trouvé au fin fond du paramétrage de son "bignou-requêteur-accès-sql-machin" l'endroit ou il devait rajouter des bib spécifiques, un truc genre EDTLIBL mais à sa sauce à lui. Et maintenant ça marche !!! :)
As400 : 1, reste du monde : 0 (comme d'hab)