gpt4 book ai didi

mysql - 在mysql存储过程中的表中插入数据

转载 作者:行者123 更新时间:2023-11-29 02:23:44 26 4
gpt4 key购买 nike

我有一个存储过程,它从表 1 中选择值,然后将值插入表 3select id 语句可能返回多个值或单个值。我已经编写了这个存储过程,但是当我运行它时它会无限循环。

myprocedurename (IN vXID Int(11), IN vYint(21))

BEGIN

SET @myId =( select GROUP_CONCAT(id) from table1 where
Xid = vXID);

SET @POS =000;
select @myId , @POS;

WHILE (LOCATE(',', @myId ) > 0)
DO
SET @value = ELT(1, @myId );
SET @STR = SUBSTRING(@myId , 1, LOCATE(',',@myId )-1);
SET @myArrayOfValue = SUBSTRING(@myId , LOCATE(',', @myId ) + 1);

Set @pos = @POS +1;

Set @u_id = (select u_id from table2 where
c_id = vYint and track_id = @STR);

Set @duration = (select duration from table2 where
c_id = vYint and track_id = @STR);

INSERT INTO table3
(`id1`,
`pos`,
`id2`,
`id3`,
`duration`)
VALUES
(vYint ,
@pos,
@STR,
@u_id,
@duration);
END WHILE;

END

我想做的就是当我在第一次选择中获得多个值时,我想遍历它们并能够为每个值插入。

最佳答案

你的定位没有开始位置,所以它总是会找到第一个','

LOCATE (search str, str, [position])

您的代码中有一个pos,但您没有在定位中使用它。

尝试

WHILE (LOCATE(',', @myId , pos ) > 0)

关于mysql - 在mysql存储过程中的表中插入数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26893056/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com