[DB2] Besoin d'aide pour un MERGE

Besoin d'aide pour un MERGE [DB2] - SQL/NoSQL - Programmation

Marsh Posté le 25-09-2012 à 09:39:08    

J'ai une base de donnée sous DB2 / AS400 / iSeries (déjà ça part mal ;))
 
je dois mettre à jour une table à partir d'une autre, vu que les jointures ne sont pas acceptées dans les requetes de type UPDATE, je souhaite utiliser la fonction MERGE
 
mon code SQL :
 
MERGE INTO HAYRUN.OPP238 AS OPP238  
USING  
(  
 SELECT
 ITMCO#
 , ITMNUM
 , RIGHT(LEFT(ITMGRP, 2),1) || 'YY'  
 FROM  HAYRUN.ITP010 AS ITP010
 WHERE  ITMCO#=16 AND TRIM(ITMNUM)='RCX12100' AND ITMFLA='S'  
) AS ITM(ITMCO,ITMNUM,GRP) ON OPP238.PIDITM = ITM.ITMNUM AND OPP238.PIDCO = ITM.ITMCO#  
WHEN MATCHED THEN
 UPDATE SET PIDGRP = ITM.GRP
ELSE IGNORE
 
bref ça me parait assez simple comme instruction,
et bé sous le query de iNavigator je choppe l'erreur suivante :
 
Message : [SQL0104] Token MERGE was not valid. Valid tokens: ( END GET SET CALL DROP FREE HOLD LOCK OPEN WITH ALTER BEGIN. Cause . . . . . :   A syntax error was detected at token MERGE.  Token MERGE is not a valid token. (...)
 
Pourtant la version de la BDD (7.1) est sensé supporter le MERGE : http://publib.boulder.ibm.com/info [...] ymerge.htm
 
ca fait déjà un jour que je coince là dessus,
une ptite idée ?
 
merci


---------------
Galerie Photo (Canon)
Reply

Marsh Posté le 25-09-2012 à 09:39:08   

Reply

Marsh Posté le 25-09-2012 à 19:57:44    

je m'y connais pas en DB2 (j'annonce)  
mais je me demande si tu peux pas essayer  
une requete dans ce style ne marche pas?
 SELECT
 ITMCO#
 , ITMNUM
 , RIGHT(LEFT(ITMGRP, 2),1) || 'YY'  
 FROM  HAYRUN.ITP010 AS ITP010, OPP238
 WHERE  ITMCO#=16 AND TRIM(ITMNUM)='RCX12100' AND ITMFLA='S' AND   OPP238.PIDITM = ITM.ITMNUM AND OPP238.PIDCO = ITM.ITMCO#

Reply

Marsh Posté le 25-09-2012 à 20:18:56    

Salut,
 
oui la jointure fonctionne, il n'y  a pas de problème pour ça
 
le problème c'est pour faire un UPDATE avec une jointure, manifestement possible avec le MERGE  
mais j'y arrives pas :(
 


---------------
Galerie Photo (Canon)
Reply

Marsh Posté le 25-09-2012 à 20:37:24    

UPDATE SET PIDGRP = GRP FROM (SELECT
 ITMCO#
 , ITMNUM
 , RIGHT(LEFT(ITMGRP, 2),1) || 'YY' AS GRP
 ,  OPP238.PIDGRP
 FROM  HAYRUN.ITP010 AS ITP010, OPP238
 WHERE  ITMCO#=16 AND TRIM(ITMNUM)='RCX12100' AND ITMFLA='S' AND   OPP238.PIDITM = ITM.ITMNUM AND OPP238.PIDCO = ITM.ITMCO#) AS TEST

 

ça n'existe pas ?


Message édité par boomy29 le 25-09-2012 à 20:38:49
Reply

Marsh Posté le 26-09-2012 à 08:40:05    

Non :(
 
ce n'est pas de l'ISO SQL ... malheureusement (ça marche très bien sous mon SQL Server)


---------------
Galerie Photo (Canon)
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed