Oracle
 sql >> Base de données >  >> RDS >> Oracle

Oracle -- AVEC CLAUSE => FUSIONNER ? (Erreur de syntaxe, )

Vous ne pouvez pas utiliser la clause WITH ailleurs que dans une instruction SELECT. Consultez la documentation ici. :

Donc, vous pouvez faire quelque chose comme ça (testé à 11 g) :

MERGE INTO animalia d
USING (WITH X AS 
       (SELECT  'moo' AS COW, 'woof' AS CAT, 
                (SELECT MAX( DECIBELS ) 
                   FROM ANIMALIA 
                  WHERE COW = 'moo' ) AS DECIBELS
          FROM DUAL )
       SELECT * FROM X) q ON (1 = 1)
 WHEN MATCHED THEN UPDATE SET d.cow = q.cow||' and more';