使用一个存储的生产者插入多行

时间:2015-08-17 00:37:41

标签: mysql stored-procedures stored-functions mysql-insert-id

美好的一天。

我正在研究MySql的Stored Producer。 是否可以在单个存储生产者中插入多行, 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 ;

我没有正确的代码我应该在我的价值观中写些什么。添加多行。

示例:

  

CALL spinsertmultiple('name','2015-08-17 8:00:00','2015-08-17 12:00:00');

我的表中的预期输出(我的表中的列:名称 | 时间 | 日期

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

我一直在做一些研究,但所有解决方案都使用 INSERT INTO tablename(colname ...)VALUES(values ...),(values ...),(values ...)

1 个答案:

答案 0 :(得分:0)

是的,一种可能的解决方案是使用循环。您减去开始和结束时间的差异,并将其用于您的计数器。

半伪代码/ SQL:

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

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