T-SQL: クエリーでスリープ (sleep) させる
SQL でスリープ(sleep)させる
たま~に、ストアドプロシジャー内で一定期間、スリープ(sleep)させたいような時ありませんか?
C# で言えば、Thread.Sleep メソッドのような感じです。
ここでは、そんな時に使える、フロー制御言語をご紹介します。
フロー制御言語 - WAITFOR
ストアードプロシジャー内などで、一定期間、実行をブロックさせたい時には、フロー制御言語の WAITFOR を使います。
例えば、5 秒間ブロックしたい時は、WAITFOR DELAY を使って以下のように指定します。
WAITFOR DELAY '00:00:05';
DELAY の後には、DateTime 型の時間の部分のみを指定します。 日付の部分まで含めると、エラーになってしまいます。
最大 24 時間まで指定することができます。
他にも、WAITFOR TIME を使うことによって、指定の時間まで、実行をブロックすることができます。
例えば 17 時 54 分 30 秒までブロックしたい時は以下のように指定します。
WAITFOR TIME '17:54:30';
こちらも、TIME の後に指定できるのは DateTime 型の時間の部分のみです。
普段の開発にはあまり使わないかもしれませんが、知っておくとなかなか便利です!