【发布时间】:2010-12-17 05:45:49
【问题描述】:
我正在尝试在 MySQL 中编写一个存储过程,它将执行一个简单的选择查询,然后循环遍历结果以确定是执行其他查询、数据转换还是完全丢弃数据。实际上,我想实现这个:
$result = mysql_query("SELECT something FROM somewhere WHERE some stuff");
while ($row = mysql_fetch_assoc($result)) {
// check values of certain fields, decide to perform more queries, or not
// tack it all into the returning result set
}
只有,我只想要在 MySQL 中,所以它可以作为一个过程来调用。我知道对于触发器,有 FOR EACH ROW ... 语法,但我找不到在 CREATE TRIGGER ... 语法之外使用的任何类似内容。我已经阅读了 MySQL 中的一些循环机制,但到目前为止,我所能想象的就是我将实现这样的东西:
SET @S = 1;
LOOP
SELECT * FROM somewhere WHERE some_conditions LIMIT @S, 1
-- IF NO RESULTS THEN
LEAVE
-- DO SOMETHING
SET @S = @S + 1;
END LOOP
虽然这在我的脑海里有些模糊。
作为参考,虽然我认为它不一定相关,但初始查询会将四个表连接在一起以形成分层权限模型,然后根据特定权限链的高度,它会检索有关应继承该权限的子级的附加信息。
【问题讨论】:
-
你可以用 PHP 轻松完成
-
FOR (id, name) AS SELECT * FROM user BEGIN ... END; bugs.mysql.com/bug.php?id=68758&thanks=4
标签: mysql loops stored-procedures database-cursor