mysql - 使用一个存储过程插入多行

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

美好的一天。

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

最佳答案

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

半伪代码/SQL:

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

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

关于mysql - 使用一个存储过程插入多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32041326/

相关文章:

php - 如何使用 mysqli 在查询中按月份编号获取月份名称?

mysql - mysql中的查询和问题有什么区别

mysql - Ruby on Rails 按周分组

sql-server - 存储过程会导致内存泄漏吗?

MySQL 在函数内调用存储过程

MySql REGEXP 搜索带有左方括号和右方括号的任何内容

mysql - 在存储过程中合并格式化日期和字符串

t-sql - 如何根据参数是否为空或空字符串在存储过程中设置参数

php - MySQL存储过程或函数以特定格式返回人名

mysql - MySQL 中的模仿表( View 或存储函数)