SQL Serverでは、WAITFOR
を使用できます バッチ、ストアドプロシージャ、またはトランザクションの実行を遅らせるステートメント。
MySQLのsleep()
と同様に機能します 働き。
実際には、おそらくPostgresの3つの「スリープ」関数の組み合わせのようなものです:pg_sleep()
、pg_sleep_for()
、およびpg_sleep_until()
。
これは、SQLServerのWAITFOR
ステートメントには、実行が続行されるまでの時間遅延または実際の固定時間を指定するオプションがあります。
例–遅延を指定する
時間遅延を指定するには、DELAY
を使用します 引数の後に、待機/スリープする実際の時間が続きます。
遅延は最大24時間です。
実例を示します。
SELECT CURRENT_TIMESTAMP AS [First Timestamp];
WAITFOR DELAY '00:00:10';
SELECT CURRENT_TIMESTAMP AS [Second Timestamp];
結果:
Time: 11.137s (11 seconds) +-------------------------+ | First Timestamp | |-------------------------| | 2020-06-29 00:02:30.963 | +-------------------------+ (1 row affected) Commands completed successfully. +-------------------------+ | Second Timestamp | |-------------------------| | 2020-06-29 00:02:41.610 | +-------------------------+ (1 row affected)
DELAY
を使用する場合 オプションの場合、値はhh:mm [[:ss].mss]としてフォーマットされます。
値は日時のいずれかで指定できます データ形式、またはローカル変数として。ただし、日付は指定できないため、日時の日付部分 値は許可されていません。
例–時間を指定する
または、TIME
を使用することもできます バッチ、ストアドプロシージャ、またはトランザクションが実行される時間を指定する引数。
この場合、提供される値は、WAITFOR
が実行された時刻です。 ステートメントが終了します。
実例を示します。
SELECT CURRENT_TIMESTAMP AS [First Timestamp];
WAITFOR TIME '04:33:30';
SELECT CURRENT_TIMESTAMP AS [Second Timestamp];
結果:
Time: 39.487s (39 seconds) +-------------------------+ | First Timestamp | |-------------------------| | 2020-06-29 04:32:51.183 | +-------------------------+ (1 row affected) Commands completed successfully. +-------------------------+ | Second Timestamp | |-------------------------| | 2020-06-29 04:33:30.160 | +-------------------------+ (1 row affected)
提供する時間の値に関して留意すべき点がいくつかあります。
- 時刻は日時で指定できます データ形式、またはローカル変数として指定できます。
- 日付は指定できないため、日時の日付部分 値は許可されていません。
- 時刻はhh:mm [[:ss] .mss]の形式で、オプションで1900-01-01の日付を含めることができます。
実際の遅延は変動する可能性があります
実際の遅延時間は、サーバーの負荷などによって異なるため、指定した時間とは異なる場合があります。
タイムカウンターは、WAITFOR
のときに開始されます ステートメントスレッドがスケジュールされています。サーバーがビジー状態の場合、スレッドがすぐにスケジュールされない可能性があるため、時間遅延が指定された時間より長くなる可能性があります。
サーバーブローカーメッセージ
WAITFOR
ステートメントは、ServiceBrokerメッセージにのみ適用可能ないくつかの引数/値を受け入れます。
Service Brokerメッセージを使用する場合、RECEIVE
を提供できます ステートメントまたはGET CONVERSATION GROUP
ステートメント、およびTIMEOUT
メッセージがキューに到着するのを待機する期間をミリ秒単位で指定する引数。
これらのオプションの詳細については、Microsoftの公式ドキュメントを参照してください。