Je souhaite insérer plusieurs lignes dans une table DB2. J'ai une requête qui ressemble à ceci
insert into tableName
(col1, col2, col3, col4, col5)
values
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5);
Cette requête ne fonctionne pas. Je ne sais pas s'il existe une manière plus syntaxiquement correcte de le faire dans DB2. Mais il serait utile d'insérer mes données de test.
Je suppose que vous utilisez DB2 pour z/OS, ce qui malheureusement (pour une raison quelconque, je n'ai jamais vraiment compris pourquoi) ne prend pas en charge l'utilisation d'une liste de valeurs où une sélection complète serait appropriée.
Vous pouvez utiliser une sélection comme ci-dessous. C'est un peu lourd, mais ça marche:
INSERT INTO tableName (col1, col2, col3, col4, col5)
SELECT val1, val2, val3, val4, val5 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT val1, val2, val3, val4, val5 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT val1, val2, val3, val4, val5 FROM SYSIBM.SYSDUMMY1 UNION ALL
SELECT val1, val2, val3, val4, val5 FROM SYSIBM.SYSDUMMY1
Votre déclaration fonctionnerait sur DB2 pour Linux/Unix/Windows (LUW), au moins lorsque je l'ai testée sur mon LUW 9.7.
MISE À JOUR - Version encore moins verbeuse
INSERT INTO tableName (col1, col2, col3, col4, col5)
VALUES ('val1', 'val2', 'val3', 'val4', 'val5'),
('val1', 'val2', 'val3', 'val4', 'val5'),
('val1', 'val2', 'val3', 'val4', 'val5'),
('val1', 'val2', 'val3', 'val4', 'val5')
Ce qui suit fonctionne également pour DB2 et est légèrement moins verbeux
INSERT INTO tableName (col1, col2, col3, col4, col5)
VALUES ('val1', 'val2', 'val3', 'val4', 'val5') UNION ALL
VALUES ('val1', 'val2', 'val3', 'val4', 'val5') UNION ALL
VALUES ('val1', 'val2', 'val3', 'val4', 'val5') UNION ALL
VALUES ('val1', 'val2', 'val3', 'val4', 'val5')
autre méthode
INSERT INTO tableName (col1, col2, col3, col4, col5)
select * from table(
values
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5),
(val1, val2, val3, val4, val5)
) tmp