MySQL循环没有存储的例程

时间:2013-01-28 11:53:59

标签: mysql loops batch-processing

我经常发现自己需要执行类似批处理的MySQL操作。现在我需要使用参数0,1,2,... 1,000来调用存储的例程1000次。我可以创建一个带有LOOP构造的存储例程来执行此操作,或者编写

CALL MyStoredRoutine(0);
CALL MyStoredRoutine(1);
...
CALL MyStoredRoutine(1000);

我认为这两个选项都非常繁琐。我想知道是否有更简单的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

假设要求只传入一个INT参数,如果你使用* nix(使用〜/ .mylogin.cnf提供的mysql用户凭证),你可以在shell中使用bash one-liner。

$ for i in {1..1000}; do mysql -e "call `db`.`selecta`($i)"; done

+------+
| a    |
+------+
|    1 |
+------+
+------+
| a    |
+------+
|    2 |
+------+
...

这里,过程selecta只是对传递给过程的参数执行SELECT,但是您可以将该技术应用于任何例程。