T-SQL: クエリーでスリープ (sleep) させる

SQL でスリープ(sleep)させる

たま~に、ストアドプロシジャー内で一定期間、スリープ(sleep)させたいような時ありませんか?

C# で言えば、Thread.Sleep メソッドのような感じです。

ここでは、そんな時に使える、フロー制御言語をご紹介します。


フロー制御言語 - WAITFOR

ストアードプロシジャー内などで、一定期間、実行をブロックさせたい時には、フロー制御言語の WAITFOR を使います。

例えば、5 秒間ブロックしたい時は、WAITFOR DELAY を使って以下のように指定します。

WAITFOR DELAY '00:00:05';

SQL でスリープ(sleep)させる 1

DELAY の後には、DateTime 型の時間の部分のみを指定します。 日付の部分まで含めると、エラーになってしまいます。

最大 24 時間まで指定することができます。


他にも、WAITFOR TIME を使うことによって、指定の時間まで、実行をブロックすることができます。

例えば 17 時 54 分 30 秒までブロックしたい時は以下のように指定します。

WAITFOR TIME '17:54:30';

SQL でスリープ(sleep)させる 2

こちらも、TIME の後に指定できるのは DateTime 型の時間の部分のみです。

普段の開発にはあまり使わないかもしれませんが、知っておくとなかなか便利です!

© 2010-2024 SQL Server 入門