procédure et insert multiple
Bonjour,
J'ai une procédure dans laquelle une requête de sélection parse une table, réalise une extraction, puis écrit les résultats dans une autre table.
Actuellement, pour chaque résultat, je génère une requête "insert into". Je trouvais pas ça très optimisé, dans le cas ou je dépassais un certain nombre de résultats, autant réaliser un insert multiple.
En l'occurence, je ne vois pas trop comment le réaliser vu que je génère l'intégralité de la requête à la volée.
Voici le code de la procédure :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
| CREATE PROCEDURE CREATE_BRANDS()
BEGIN
/**
* Flag : définit la fin de la lecture de la table CONTENT.
*/
DECLARE done INT DEFAULT 0;
/**
* Variable MYBRANDS
* Liste les marques.
*/
DECLARE myBrand VARCHAR(35);
/**
* Création d'un curseur pour lecture de la table CONTENT.
* Ce curseur stocke l'ensemble des marques.
*/
DECLARE BRANDCURSOR CURSOR FOR SELECT BRAND FROM CONTENT GROUP BY BRAND;
/**
* Gestionnaire de fin d'exécution du traitement de la requête.
*/
DECLARE CONTINUE HANDLER FOR SQLSTATE '02000' SET done = 1;
/**
* Ouverture du curseur.
*/
OPEN BRANDCURSOR;
/**
* Lit les résultats tant que done = 1, les écrits dans la marque.
*/
REPEAT
FETCH BRANDCURSOR INTO myBrand;
IF done = 0 THEN
INSERT INTO BRAND (LIBELLE) VALUES (myBrand) ON DUPLICATE KEY UPDATE LIBELLE = myBrand;
END IF;
UNTIL done
END REPEAT;
/**
* Fermeture du curseur.
*/
CLOSE BRANDCURSOR;
END |
On constate que dans mon FETCH, pour chaque résultat je génère une requête. Comment faire pour générer une seule requête d'insertion (multi insert) dans ce cas précis ?
Merci beaucoup de votre aide !
M.