Di SQL Server, Anda dapat menggunakan WAITFOR
pernyataan untuk menunda eksekusi batch, prosedur tersimpan, atau transaksi.
Ini bekerja mirip dengan sleep()
MySQL fungsi.
Sebenarnya, ini mungkin lebih seperti kombinasi dari tiga fungsi "tidur" Postgres:pg_sleep()
, pg_sleep_for()
, dan pg_sleep_until()
.
Saya mengatakan ini, karena WAITFOR
SQL Server pernyataan memberi Anda opsi untuk menentukan penundaan waktu, atau waktu tetap yang sebenarnya sebelum eksekusi dilanjutkan.
Contoh – Tentukan Penundaan
Untuk menentukan waktu tunda, gunakan DELAY
argumen, diikuti dengan waktu sebenarnya untuk menunggu/tidur.
Penundaan bisa maksimal 24 jam.
Berikut ini contoh untuk didemonstrasikan.
SELECT CURRENT_TIMESTAMP AS [First Timestamp];
WAITFOR DELAY '00:00:10';
SELECT CURRENT_TIMESTAMP AS [Second Timestamp];
Hasil:
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)
Saat menggunakan DELAY
opsi, nilainya diformat sebagai jj:mm[[:ss].mss].
Nilai dapat ditentukan dalam datetime format data, atau sebagai variabel lokal. Namun, tanggal tidak dapat ditentukan, jadi tanggal adalah bagian dari datetime nilai tidak diperbolehkan.
Contoh – Tentukan Waktu
Atau, Anda dapat menggunakan TIME
argumen untuk menentukan waktu ketika batch, prosedur tersimpan, atau transaksi berjalan.
Dalam hal ini, nilai yang diberikan adalah waktu di mana WAITFOR
pernyataan selesai.
Berikut ini contoh untuk didemonstrasikan.
SELECT CURRENT_TIMESTAMP AS [First Timestamp];
WAITFOR TIME '04:33:30';
SELECT CURRENT_TIMESTAMP AS [Second Timestamp];
Hasil:
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)
Berikut adalah beberapa hal yang perlu diingat mengenai nilai waktu yang Anda berikan:
- Waktu dapat ditentukan dalam waktu tanggal format data, atau dapat ditentukan sebagai variabel lokal.
- Tanggal tidak dapat ditentukan, jadi tanggal adalah bagian dari waktu-tanggal nilai tidak diperbolehkan.
- Waktu diformat sebagai jj:mm[[:ss].mss] dan secara opsional dapat menyertakan tanggal 1900-01-01.
Penundaan Sebenarnya Dapat Bervariasi
Penundaan waktu yang sebenarnya dapat bervariasi dari waktu yang Anda tentukan, karena ini akan tergantung pada hal-hal seperti beban server.
Penghitung waktu dimulai ketika WAITFOR
utas pernyataan dijadwalkan. Jika server sibuk, thread mungkin tidak segera dijadwalkan, sehingga waktu tunda mungkin lebih lama dari waktu yang ditentukan.
Pesan Pialang Server
WAITFOR
pernyataan menerima beberapa argumen/nilai yang hanya berlaku untuk pesan Pialang Layanan.
Saat menggunakan pesan Pialang Layanan, Anda dapat memberikan RECEIVE
pernyataan atau GET CONVERSATION GROUP
pernyataan, serta TIMEOUT
argumen yang menentukan periode waktu, dalam milidetik, untuk menunggu pesan tiba di antrian.
Lihat dokumentasi resmi Microsoft untuk informasi selengkapnya tentang opsi ini.