Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Server Setara dengan Sleep():Pernyataan WAITFOR

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.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengonversi Huruf Kecil ke Huruf Besar di SQL Server – UPPER ()

  2. Ganti nama Kolom di SQL Server (T-SQL)

  3. SQL Server:Kiat Berguna untuk Pemula

  4. SQL Server Subquery mengembalikan lebih dari 1 nilai. Ini tidak diizinkan ketika subquery mengikuti =, !=, <, <=,>,>=

  5. penggabungan nvarchar / indeks / nvarchar (maks) perilaku yang tidak dapat dijelaskan