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

在mysql存储过程中的表中插入数据,mysql,stored-procedures,Mysql,Stored Procedures,我有一个存储过程,它从表1中选择值,然后将值插入表3 select 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 ,

我有一个存储过程,它从表1中选择值,然后将值插入表3 select 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

我所要做的就是当我在first select中获得多个值时,然后我想循环遍历它们,并能够为每个值插入。

您的定位没有起始位置,因此它将始终找到第一个','

LOCATE (search str, str, [position])
您的代码中有一个
pos
,但您的代码中没有使用它

试一试

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