Hello,
J'aimerais faire le traitement suivant, un update "massif", à savoir remplacer les anciens ID de TABLE1 (100,101,102) dans un clob par ceux dans la table de correspondance TABLE2 :
TABLE1
---------------------------------------------------------------------------------------------------------------------------------
ID(int) -------------------------------------------- DATA(clob)
---------------------------------------------------------------------------------------------------------------------------------
1 --------------------------------------------- <data><ids><id>100</id><id>101</id><id>102</id></ids></data>
----------------------------------------------------------------------------------------------------------------------------------
TABLE2
----------------------------------------------------------------------------------------------------------------------------------
ID -- ANCIEN_ID -- NOUVEAU_ID --
----------------------------------------------------------------------------------------------------------------------------------
1 -- 101 -- 233 --
1 -- 102 -- 248 --
1 -- 103 -- 255 --
----------------------------------------------------------------------------------------------------------------------------------
C'est un exemple (j'ai des milliers de lignes dans ce cas, je ne peux pas faire 3 requêtes ).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 UPDATE TABLE1 T1 SET DATA= ( SELECT replace(T1.DATA, T2.ANCIEN_ID, T2.NOUVEAU_ID) FROM TABLE2 T2 WHERE t2.ID=T1.ID )
Le problème : le select retourne évidemment pusieurs lignes et donc l'update échoue. Comment dois-je m'y prendre ?
Merci !
Info complémentaire : je suis sous DB2/AS400.
Partager