Call a stored procedure for each row returned by a query in MySQL

匿名 (未验证) 提交于 2019-12-03 01:57:01

问题:

I want a MySQL stored procedure which effectively does:

foreach id in (SELECT id FROM objects WHERE ... ) CALL testProc(id)

I think I simply want the MySQL answer to this question but I don't understand cursors well: How do I execute a stored procedure once for each row returned by query?

回答1:

You need a stored procedure!

CREATE PROCEDURE foo() BEGIN   DECLARE done BOOLEAN DEFAULT FALSE;   DECLARE _id BIGINT UNSIGNED;   DECLARE cur CURSOR FOR SELECT id FROM objects WHERE ...;   DECLARE CONTINUE HANDLER FOR NOT FOUND SET done := TRUE;    OPEN cur;    testLoop: LOOP     FETCH cur INTO _id;     IF done THEN       LEAVE testLoop;     END IF;     CALL testProc(_id);   END LOOP testLoop;    CLOSE cur; END


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!