小编use*_*182的帖子

用于预处理语句的MySQL存储过程游标

我有两张桌子:

people_en: id, name
people_es: id, name
Run Code Online (Sandbox Code Playgroud)

(请不要理会规范化.设计是规范化的.表格要比这复杂得多,但这只是简化问题的一种方法).

然后我有一个存储过程:

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$$
Run Code Online (Sandbox Code Playgroud)

或多或少,程序中的逻辑是:

如果select给出3行,那么我们必须循环遍历行并使用每行中的值执行某些操作.别的什么东西(不重要的是什么,但是我把这个让你明白我需要在循环之前有一个if语句.

我已经看过并阅读过关于游标的内容,但是找不到由concat创建的选项(这有关系吗?),尤其是使用准备好的语句创建的.如何遍历结果列表并使用每行的值?谢谢.

mysql stored-procedures

9
推荐指数
2
解决办法
9920
查看次数

mysql 在位置替换字符

如果我在这样的存储过程中有一个变量:declare str varchar(10); 设置 str = 'ABCD';

如何更改字符串中任意位置的字符?例如:在程序中 x 是 3。我需要改变 str 所以它变成 str = 'AB*D';

这意味着,由于 x 等于 3,因此在字符串中,位置 3 处的字符应更改为 '*'。

mysql stored-procedures

1
推荐指数
1
解决办法
6205
查看次数

标签 统计

mysql ×2

stored-procedures ×2