Je dois sélectionner une expression CTE (expression de table commune) dans DB2 v8 et insérer le résultat dans une table. La documentation pertinente pour v8 est difficile à comprendre au premier coup d'œil, mais pour v9 il est un exemple clair (http://publib.boulder.ibm.com/infocenter/dzichelp/v2r2/index.jsp?topic=/com.ibm.db29.doc.apsg/db2z_createcte.htm):Insertion DB2 v8 avec CTE
INSERT INTO vital_mgr (mgrno)
WITH VITALDEPT (deptno, se_count) AS
(
SELECT deptno, count(*)
FROM DSN8910.EMP
WHERE job = 'senior engineer'
GROUP BY deptno
)
SELECT d.manager
FROM DSN8910.DEPT d
, VITALDEPT s
WHERE d.deptno = s.deptno
AND s.se_count > (
SELECT AVG(se_count)
FROM VITALDEPT
);
Il ne fonctionne pas dans v8 cependant. Comment devrait-il être écrit en v8?
Les CTE sont pris en charge dans in v8, et la [documentation INSERT v8] (http://publib.boulder.ibm.com/infocenter/db2luw/v8/index.jsp?topic=/com.ibm.db2.udb .doc/admin/r0000970.htm) correspond au format de la requête que vous avez publiée. Vous ne mentionnez pas de message d'erreur - êtes-vous sûr que votre CTE et le SELECT suivant renvoient des données? –
Sur quelle plateforme exécutez-vous DB2? –
Désolé les gars, je n'ai pas vu vos commentaires, supposé qu'il n'y avait pas de réponse. Il s'est avéré que nous n'allions pas prendre en charge la v8 de toute façon, mais si ma mémoire est bonne, j'en suis venu à la conclusion que INSERT ne fonctionnait pas avec CTE dans v8. – vaso