Bonjour à tous,

est-il possible d'utiliser une clause with dans une requête de mise à jour :

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
 
WITH 
  MY_VIEW AS (
    SELECT *
    FROM PERSONNES
  ),
  MY_VIEW2 AS (
    SELECT MY_KEY, COUNT(*) AS NB_PERSONNES
    FROM MY_VIEW
    GROUP BY MY_KEY
  )
 
UPDATE DUAL d
SET d.MY_FIELD = mv.NB_PERSONNES
FROM MY_VIEW2 mv
WHERE d.MY_KEY = mv.MY_KEY
ou


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
19
 
UPDATE DUAL d
SET d.MY_FIELD = 
  (
    WITH 
      MY_VIEW AS (
        SELECT *
        FROM PERSONNES
      ),
      MY_VIEW2 AS (
        SELECT MY_KEY, COUNT(*) AS NB_PERSONNES
        FROM MY_VIEW
        GROUP BY MY_KEY
      )
 
     SELECT NB_PERSONNES
     FROM MY_VIEW2 mv
     WHERE mv.MY_KEY = d.MY_KEY
  )