1

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

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

我认为这两个选项都很麻烦。我想知道是否有更简单的方法可以做到这一点?

4

1 回答 1

1

假设要求只传递一个 INT 参数,如果您使用 *nix(使用由 ~/.mylogin.cnf 提供的 mysql 用户凭据),则可以在 shell 中使用 bash 单行。

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

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

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

于 2018-04-23T18:38:54.823 回答