0

Good Day.Insertion de plusieurs lignes avec un producteur enregistré

Je travaille sur le producteur enregistré de MySql. est-il possible d'insérer plusieurs lignes dans un seul producteur stocké, spinsertmultiple (pname, pdateTimeFrom, pdateTimeTo)

CREATE DEFINER=`root`@`localhost`PROCEDURE `spinsertmultiple` 
(pname varchar(32), pdateTimeFrom DATETIME, pdateTimeTo DATETIME) 
BEGIN 
    INSERT INTO vesseleventsactual(
    name, time, date 
    ) 
    VALUES(
    pname, ??, ?? 
    ); 
END$$ 
DELIMITER ; 

Je n'ai pas les bons codes que dois-je écrire dans mes valeurs. ajouter plusieurs lignes

Exemple:

CALL spinsertmultiple ('nom', '17/08/2015 08:00:00', '17.08.2015 12:00:00');

Sortie dans ma table attendus (Colonnes dans ma table: nom | temps | Date)

name | 8:00:00 | 2015-08-17 
name | 9:00:00 | 2015-08-17 
name | 10:00:00 | 2015-08-17 
name | 11:00:00 | 2015-08-17 
name | 12:00:00 | 2015-08-17 

J'ai fait des recherches, mais toutes les solutions utilisent INSERT INTO nom_table (nom_colonne ...) VALEURS (valeurs ...), (valeurs ...), (valeurs ...)

+0

La procédure stockée est le terme et vous devrez poster aussi. – e4c5

+0

Fait @ e4c5 en ajoutant mon code de producteur stocké. Merci –

Répondre

0

Oui, une solution possible serait nous une boucle. Vous soustrayez la différence de vos heures de début et de fin, et utilisez cela pour votre compteur.

Semi pseudo-code/SQL:

SET @inserts = 1 
SET @insertsNeeded = @EndTime.Hours - @StartTime.Hours 

WHILE(@inserts <= @insertsNeeded) 
    INSERT INTO tablename(...) 
    @inserts = @inserts + 1 
+0

@insert, Quelle est la première valeur de cela? –

+0

@MeSoftware: cela commence à 1 et vous l'incrémentez pour chaque itération à travers votre boucle. –

+0

insertsNeeded = insertsNeeded + 1 Cela devrait donc être insert = insert + 1 ,? –