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

时间:2016-02-11 12:31:44

标签: mysql stored-procedures

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

我的照片是这样的:

UPDATE `vouchers` SET `code` = (CALL voucherCode('db.vouchers', 3, 4))
WHERE `code` IS NULL;

使用Function不是一个选项,因为存储过程包含动态sql。如果比使用结果集更容易,也可以使用输出参数。目前,该过程定义如下,但可以很容易地采用以产生单行结果,以便在上面的代码示例中按预期运行。

`voucherCode`( IN `tableName` VARCHAR(40),
IN `segments` INT(32), IN `segmentLength` INT(32), OUT `code` VARCHAR(32) )

我到目前为止唯一的解决方案是创建另一个存储过程,该过程利用游标迭代凭证表,并在循环中调用voucherCode - 过程。

那么从插入或更新查询中调用存储过程的最佳方法是什么?

0 个答案:

没有答案