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

  1. #1
    Candidat au Club
    Remplacer un XPATH par une variable HOST pour lire une élément XML
    Bonjour,

    Voici ma requête, elle marche très bien.
    Toutefois j'aimerais remplacer le XPTAH /YAPXATR/APXATR_APN par une variable HOST, Est-ce possible? Si oui comment?
    J'ai déjà essayé plein de choses et je n'y arrive pas...
    Merci d'avance!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    EXEC SQL                                                     
    
         UPDATE TAUIESX                                             
                 SET AUIESX_XML =                                           
                 XMLMODIFY(                                                 
          -       'replace value of node /YAPXATR/APXATR_APN                
          -      'with $N', :W-XPATH-VAL AS N)                              
         WHERE 
                    ...
    END-EXEC

  2. #2
    Expert éminent
    Bonjour, c'est réalisable avec un ordre "prepare" avant l'exécution de ta requête.
    https://www.ibm.com/support/knowledgecenter/en/SSEPEK_10.0.0/sqlref/src/tpc/db2z_sql_prepare.html

  3. #3
    Candidat au Club
    Merci Darkzinus pour ta réponse,
    J'ai tenté le coup, mais rien de concluant.
    Aurais-tu un exemple?
    Cordialement

  4. #4
    Expert éminent
    Pourrais-tu nous mettre le code que tu as utilisé et les codes retours après exécution ?

  5. #5
    Candidat au Club
    Salut Darkzinus,
    Avec un peu d'aide j'ai réussi à faire marcher le PREPARE, requête ci-dessous.
    Ce qui est dommage c'est que je n'ai pas le droit d'utiliser l'instruction PREPARE de mon côté...
    Je suppose que c'était le seul moyen de gérer un XPTAH dynamique?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    STRING "UPDATE DB2CREA.TAUIESX SET AUIESX_XML = XMLMODIFY('" 
    	  "replace value of node " DELIMITED BY SIZE            
    	  W-XPATH       DELIMITED BY SPACE                      
    	  " with "      DELIMITED BY SIZE                       
    	  C-GUI         DELIMITED BY SIZE                       
    	  W-XPATH-VAL   DELIMITED BY SPACE                      
    	  C-GUI         DELIMITED BY SIZE                       
    	  " ') WHERE AUIESX_VAL = ?" DELIMITED BY SIZE          
    	  INTO W-DQuery                                         
    															                       
    MOVE W-DQuery 			TO W-SQLStr-Txt                                
    MOVE LENGTH OF W-DQuery      TO W-SQLStr-Len                      
    															
    Exec sql Prepare SqlStm From :W-SQLStr End-exec                                                               
    	
    EXEC SQL                                                     
    	EXECUTE SqlStm USING  :AUIESX_VAL                
    END-EXEC

  6. #6
    Expert éminent
    Bonjour, effectivement sans le "prepare" cela me semble compliqué à exécuter en dynamique. Après en "pure XML" sous IBM il est possible d'utiliser des fonctions XML mais je ne suis pas certain qu'elles soient utilisables dans ton cas.