【发布时间】:2014-07-30 20:56:44
【问题描述】:
我有两张桌子:
people_en: id, name
people_es: id, name
(请不要为规范化而烦恼。设计已规范化。表格比这复杂得多 但这只是简化我的问题的一种方式)。
然后我有一个存储过程:
CREATE PROCEDURE myproc(lang char(2))
BEGIN
set @select = concat('SELECT * FROM ', lang, ' limit 3');
PREPARE stm FROM @select;
EXECUTE stm;
DEALLOCATE PREPARE stm;
SET @cnt = FOUND_ROWS();
SELECT @cnt;
IF @cnt = 3 THEN
//Here I need to loop through the rows
ELSE
//Do something else
END IF;
END$$
或多或少,程序中的逻辑是:
如果 select 给出了 3 行,那么我们必须遍历这些行并对每行中的值做一些事情。 否则 somwthing else (不重要什么,但我放这个是为了让你明白我需要有 循环前的 if 语句。
我已经看到并阅读了有关游标的信息,但找不到很多由 concat 创建的选择(这有关系吗?) 尤其是用准备好的语句创建的。 如何遍历结果列表并使用每一行的值? 谢谢。
【问题讨论】: