我经常发现自己需要执行类似批处理的MySQL操作。现在我需要使用参数0,1,2,... 1,000来调用存储的例程1000次。我可以创建一个带有LOOP
构造的存储例程来执行此操作,或者编写
CALL MyStoredRoutine(0);
CALL MyStoredRoutine(1);
...
CALL MyStoredRoutine(1000);
我认为这两个选项都非常繁琐。我想知道是否有更简单的方法来做到这一点?
答案 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,但是您可以将该技术应用于任何例程。