在 MYSQL 存储过程中循环 select 查询结果集
Loop the select query result set in MYSQL Stored Procedure
如何循环查询结果集并循环结果集获取列值并在数据库中触发插入查询。
以下是我的SP:
Input parameter listvalues and value is 1,2,3,4,5
SET @t1 = CONCAT("SELECT ID FROM interest WHERE ID IN(",listvalues,")");
PREPARE stmt1 FROM @t1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
然后如何循环 stmt1 以获取所有 ID 值以插入另一个 table。
我的SP:
BEGIN
INSERT INTO `registration`(`FirstName`,`LastName`,`EMail`,`PhoneNumber`,`Gender`,`State`,`City`,`ImagePath`,`IsDeleted`,`CreatedDate`,`ModifiedDate`)
VALUES(FirstName,LastName,EMail,PhoneNumber,Gender,State,City,ImagePath,0,NOW(),NOW());
SET @RegID = LAST_INSERT_ID();
SET @t1 = CONCAT("INSERT INTO `userinterest` (`InterestId` , `UserId`) VALUES((SELECT ID FROM interest WHERE ID IN(",InterestList,")),",@RegID,")");
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END
但它给出错误 子查询 returns 多于 1 行
在查询中执行 INSERT
:
SET @t1 = CONCAT("INSERT INTO otherTable (interest_id)
SELECT ID FROM interest WHERE ID IN(",listvalues,")");
最后我将存储过程编写为:
BEGIN
INSERT INTO `registration`(`FirstName`,`LastName`,`EMail`,`PhoneNumber`,`Gender`,`State`,`City`,`ImagePath`,`IsDeleted`,`CreatedDate`,`ModifiedDate`)
VALUES(FirstName,LastName,EMail,PhoneNumber,Gender,State,City,ImagePath,0,NOW(),NOW());
SET @RegID = LAST_INSERT_ID();
SET @t1 = CONCAT("INSERT INTO `userinterest` (`InterestId` , `UserId`) SELECT ID AS InterestId, ",@RegID," AS UserId FROM interest WHERE ID IN(",InterestList,")");
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END
如何循环查询结果集并循环结果集获取列值并在数据库中触发插入查询。
以下是我的SP:
Input parameter listvalues and value is 1,2,3,4,5
SET @t1 = CONCAT("SELECT ID FROM interest WHERE ID IN(",listvalues,")");
PREPARE stmt1 FROM @t1;
EXECUTE stmt1;
DEALLOCATE PREPARE stmt1;
然后如何循环 stmt1 以获取所有 ID 值以插入另一个 table。
我的SP:
BEGIN
INSERT INTO `registration`(`FirstName`,`LastName`,`EMail`,`PhoneNumber`,`Gender`,`State`,`City`,`ImagePath`,`IsDeleted`,`CreatedDate`,`ModifiedDate`)
VALUES(FirstName,LastName,EMail,PhoneNumber,Gender,State,City,ImagePath,0,NOW(),NOW());
SET @RegID = LAST_INSERT_ID();
SET @t1 = CONCAT("INSERT INTO `userinterest` (`InterestId` , `UserId`) VALUES((SELECT ID FROM interest WHERE ID IN(",InterestList,")),",@RegID,")");
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END
但它给出错误 子查询 returns 多于 1 行
在查询中执行 INSERT
:
SET @t1 = CONCAT("INSERT INTO otherTable (interest_id)
SELECT ID FROM interest WHERE ID IN(",listvalues,")");
最后我将存储过程编写为:
BEGIN
INSERT INTO `registration`(`FirstName`,`LastName`,`EMail`,`PhoneNumber`,`Gender`,`State`,`City`,`ImagePath`,`IsDeleted`,`CreatedDate`,`ModifiedDate`)
VALUES(FirstName,LastName,EMail,PhoneNumber,Gender,State,City,ImagePath,0,NOW(),NOW());
SET @RegID = LAST_INSERT_ID();
SET @t1 = CONCAT("INSERT INTO `userinterest` (`InterestId` , `UserId`) SELECT ID AS InterestId, ",@RegID," AS UserId FROM interest WHERE ID IN(",InterestList,")");
PREPARE stmt3 FROM @t1;
EXECUTE stmt3;
DEALLOCATE PREPARE stmt3;
END