Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

AS/400 Discussion :

Triggers SQL & Co


Sujet :

AS/400

  1. #1
    Membre à l'essai
    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...)

  2. #2
    Membre expérimenté
    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 ...

  3. #3
    Membre à l'essai

    pas mieux....

  4. #4
    Membre expérimenté
    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 ...

  5. #5
    Membre à l'essai
    ...
    J'ai supprimé le collègue et çà va mieux.




    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)

###raw>template_hook.ano_emploi###