如何传递逗号分隔的输入参数以从另一个存储过程调用存储过程

时间:2019-09-11 13:28:38

标签: mysql stored-procedures prepared-statement

我引荐this link传递逗号分隔的字符串以运行查询。工作正常! 但是我使用相同的方法来调用存储过程,该过程显示以下错误:

  

错误代码:1318。PROCEDURE UPDATE_DETAILS的参数数目不正确;预期1,得到3

这是我尝试使用上面链接中提到的方法的示例,

CREATE DEFINER=`root`@`localhost` PROCEDURE `RUN_JOB`()
BEGIN
   declare ids text;

    select group_concat(id) into ids from table_1;

    set @sql = concat('call 
    UPDATE_DETAILS(',ids, ')');

    PREPARE stmt FROM @sql;

    EXECUTE stmt;

    DEALLOCATE PREPARE stmt;

END



CREATE DEFINER=`root`@`localhost` PROCEDURE `UPDATE_DETAILS`(
IN id_value int)
BEGIN

    update table_2 set 
        col_1 = 'some_value' where id = id_value;

    update table_3 set 
        col_2 = 'some_value' where id = id_value;

END

这是正确的方法还是还有其他方法可以实现?

谢谢!

1 个答案:

答案 0 :(得分:1)

由于您正在将逗号分隔的值解析为c变量,因此它不起作用。

尝试以下方法。在这里使用O(2*n^4*log(n) + n^2 * log(n)) = O(n^4 * log(n))来一次获取ID,它将调用sp int

cursor