Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Еквивалентът на SQL Server на Sleep():Инструкцията WAITFOR

В SQL Server можете да използвате WAITFOR изявление за забавяне на изпълнението на партида, съхранена процедура или транзакция.

Работи подобно на sleep() на MySQL функция.

Всъщност вероятно това е по-скоро комбинация от трите функции за „сън“ на Postgres:pg_sleep() , pg_sleep_for() и pg_sleep_until() .

Казвам това, защото WAITFOR на SQL Server операторът ви дава възможност да посочите или времево забавяне, или действително фиксирано време, преди изпълнението да продължи.

Пример – Посочете забавяне

За да посочите закъснение, използвайте 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].

Стойността може да бъде посочена или в дата и час формат на данни или като локална променлива. Датите обаче не могат да бъдат посочени, така че частта с датата на datetime стойността не е разрешена.

Пример – Посочете час

Като алтернатива можете да използвате 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)

Ето някои неща, които трябва да имате предвид относно стойността на времето, която предоставяте:

  • Часът може да бъде посочен в дата и час формат на данни или може да бъде посочен като локална променлива.
  • Дати не могат да бъдат посочени, така че частта с датата на datetime стойността не е разрешена.
  • Часът е форматиран като hh:mm[[:ss].mss] и по избор може да включва датата 1900-01-01.

Действителното забавяне може да варира

Действителното забавяне може да варира от времето, което сте посочили, тъй като това ще зависи от неща като натоварване на сървъра.

Броячът на времето стартира, когато WAITFOR нишката на изявленията е насрочена. Ако сървърът е зает, нишката може да не бъде насрочена незабавно, така че забавянето може да е по-дълго от определеното време.

Съобщения на сървърния брокер

WAITFOR операторът приема някои аргументи/стойности, които са приложими само за съобщения на Service Broker.

Когато използвате съобщения на Service Broker, можете да предоставите RECEIVE изявление или GET CONVERSATION GROUP оператор, както и TIMEOUT аргумент, който определя периода от време в милисекунди, за да се изчака съобщението да пристигне на опашката.

Вижте официалната документация на Microsoft за повече информация относно тези опции.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. ExecuteReader изисква отворена и налична връзка. Текущото състояние на връзката е Свързване

  2. Премахване на акаунт в база данни за поща от профил (SSMS)

  3. Алгоритъм за сортиране по GUID на SQL Server. Защо?

  4. Вмъкване на ред само ако вече не е там

  5. Проактивни проверки на състоянието на SQL Server, част 3:Настройки на инстанция и база данни