テストのために、MySQLワークベンチまたは同様のツールからループを実行することは可能ですか?試しましたがエラーが発生しました。
可能であれば、私が実行できる簡単な例を提供してください。
ストアドプロシージャがないと、SQLエディターでforループを実行できません。私は MySQLのTOAD を使用します。
クイックストアドプロシージャがその仕事をするはずです。
DELIMITER $$
DROP PROCEDURE IF EXISTS proc_loop_test$$
CREATE PROCEDURE proc_loop_test()
BEGIN
DECLARE int_val INT DEFAULT 0;
test_loop : LOOP
IF (int_val = 10) THEN
LEAVE test_loop;
END IF;
SET int_val = int_val +1;
SELECT int_val;
END LOOP;
END$$
DELIMITER ;
「ループのような」限定されたユースケースのトリックがあります。
テスト用にランダムな整数の大きな(100万から200万)行テーブルを作成したいと思いました。
INSERT INTO test_table (num) VALUES(ROUND(Rand() * 1E6));
-- calling this will insert once for every row in test_table
INSERT INTO test_table (num)
SELECT ROUND(Rand() * 1E6)
FROM test_table;
そのため、必要な数になるまで、行の数を2倍に増やし続けました。
現在のスレッドのみをブロックしたい場合は、select sleep(seconds);
を使用します。それ以外の場合は、ストアドプロシージャ(ループしたいものがある場合)またはUDF(ユーザー定義関数)を使用できます。
十分に長い任意のテーブルmyOldTableがすでにあるとすると、次のトリックを使用できます。
set @counter = 0;
select (@counter := @counter+1), @counter*@counter from myOldTable limit 1000;