mysql-在更新查询中应用存储过程的结果(使用动态sql)

mysql-在更新查询中应用存储过程的结果(使用动态sql),mysql,stored-procedures,Mysql,Stored Procedures,我想为表中的每一行运行一个存储过程,并用结果更新该行 我想象这样的情景: UPDATE `vouchers` SET `code` = (CALL voucherCode('db.vouchers', 3, 4)) WHERE `code` IS NULL; 使用函数不是选项,因为存储过程包含动态sql。如果使用输出参数比使用结果集更容易,那么也可以使用输出参数。目前,该过程的定义如下,但可以很容易地采用该过程来生成一个单行结果,以按照上述代码示例中的预期进行操作 `voucherCode`(

我想为表中的每一行运行一个存储过程,并用结果更新该行

我想象这样的情景:

UPDATE `vouchers` SET `code` = (CALL voucherCode('db.vouchers', 3, 4))
WHERE `code` IS NULL;
使用函数不是选项,因为存储过程包含动态sql。如果使用输出参数比使用结果集更容易,那么也可以使用输出参数。目前,该过程的定义如下,但可以很容易地采用该过程来生成一个单行结果,以按照上述代码示例中的预期进行操作

`voucherCode`( IN `tableName` VARCHAR(40),
IN `segments` INT(32), IN `segmentLength` INT(32), OUT `code` VARCHAR(32) )
到目前为止,我提出的唯一解决方案是创建另一个存储过程,该存储过程利用光标在凭单表中迭代,并在循环中调用
voucherCode
-过程


那么,从insert或update查询中调用存储过程的最佳方式是什么呢?

尝试使用存储过程似乎是一种奇怪的方式—为什么不在sp本身中进行更新呢?@RyanVincent这当然也是我目前找到的唯一解决方案。不过我还是希望有人知道一种更简单的方法,可以让我在查询中使用存储过程。@RamRaider,因为我也在其他上下文中使用存储过程,比如INSERT,或者在其他存储过程中使用存储过程,对我来说,这是一个多功能的构造,可以在我的数据库中重复使用。尝试使用存储过程似乎是一种奇怪的方式-为什么不在sp本身中进行更新?@RyanVincent这当然也是我目前找到的唯一解决方案。不过我还是希望有人知道一种更简单的方法,可以让我在查询中使用存储过程。@RamRaider因为我也在其他上下文中使用存储过程,比如INSERT,或者从另一个存储过程中使用存储过程,对我来说,这是一种通用的构造,可以在我的数据库中重复使用。