使用一个存储的生产者插入多行
Inserting Multiple Rows with one Stored Producer
美好的一天。
我正在研究 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');
我的 table 中的预期输出(我的 table 中的列:name | time | 日期)
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 ...) , (值...)
是的,一种可能的解决方案是使用循环。您减去开始时间和结束时间的差值,并将其用于计数器。
半伪代码/SQL:
SET @inserts = 1
SET @insertsNeeded = @EndTime.Hours - @StartTime.Hours
WHILE(@inserts <= @insertsNeeded)
INSERT INTO tablename(...)
@inserts = @inserts + 1
美好的一天。
我正在研究 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');
我的 table 中的预期输出(我的 table 中的列:name | time | 日期)
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 ...) , (值...)
是的,一种可能的解决方案是使用循环。您减去开始时间和结束时间的差值,并将其用于计数器。
半伪代码/SQL:
SET @inserts = 1
SET @insertsNeeded = @EndTime.Hours - @StartTime.Hours
WHILE(@inserts <= @insertsNeeded)
INSERT INTO tablename(...)
@inserts = @inserts + 1