【发布时间】:2020-06-16 18:32:20
【问题描述】:
我编写了一个存储过程,使用数组和循环将多个值插入到同一个表中。但该表只有数组的最后一个值。而且它还抛出一个错误说
列不能为空。
这是我的存储过程:
CREATE DEFINER=`root`@`localhost` PROCEDURE `insert_images`(
packageName VARCHAR(300),
packageUniqueCode VARCHAR(100),
packageAddedDate DATE,
packagePrice DOUBLE,
packageDescription VARCHAR(3000),
packageOwnerID INT,
images VARCHAR(500)
)
BEGIN
declare i INT default 0;
START TRANSACTION;
INSERT INTO packages(packageName, packageUniqueCode, packageAddedDate, packagePrice, packageDescription, packageOwnerID)
VALUES(packageName, packageUniqueCode, packageAddedDate, packagePrice, packageDescription, packageOwnerID);
SET i = 1;
WHILE i <= JSON_LENGTH(images) DO
INSERT INTO packageImages(imageName, location, packageOwnerID, packageID)
VALUES(JSON_EXTRACT(images,CONCAT( '$[', `i`, '].imageName')), JSON_EXTRACT(images,CONCAT( '$[', `i`, '].location')), packageOwnerID,LAST_INSERT_ID());
SET i = i + 1;
END WHILE;
COMMIT;
END
我使用以下代码调用它:
CALL insert_images("PJKG", "codea", "2022-11-11", 12, "description", 22, '[{"imageName": "pasinduImage", "location": "uploads/image"},{"imageName": "pasinduImage2", "location": "uploads/image"}]');
请帮我解决问题。谢谢
【问题讨论】:
标签: mysql database loops stored-procedures sql-insert