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 を使用している場合は、シェルで bash ワンライナーを使用できます (~/.mylogin.cnf によって提供される mysql ユーザー資格情報を使用)。

$ 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 に答える