В MariaDB, SLEEP()
е вградена функция, която заспива (на пауза) за броя секунди, определен от нейния аргумент.
Ако е без прекъсване, връща 0
, ако бъде прекъснат, връща 1
.
Синтаксис
Синтаксисът е така:
SLEEP(duration)
Където duration
е броят секунди, за които искате функцията да заспи. Това може да включва микросекунди.
Пример 1
Ето пример за демонстрация:
SELECT SLEEP(3);
Резултат:
+----------+ | SLEEP(3) | +----------+ | 0 | +----------+ 1 row in set (3.005 sec)
В този случай операцията е успешна без прекъсване и така 0
беше върнат.
Можем да видим, че операцията отне 3,005 секунди за завършване (3 от които вероятно са причинени от SLEEP()
функция).
Пример 2
Ето още един пример, който използва SLEEP()
между две други извиквания на функции:
SELECT CURTIME();
SELECT SLEEP(3);
SELECT CURTIME();
Резултат:
MariaDB [PetHouse]> SELECT CURTIME(); +-----------+ | CURTIME() | +-----------+ | 06:22:38 | +-----------+ 1 row in set (0.000 sec) MariaDB [PetHouse]> SELECT SLEEP(3); SELECT CURTIME(); +----------+ | SLEEP(3) | +----------+ | 0 | +----------+ 1 row in set (3.006 sec) MariaDB [PetHouse]> SELECT CURTIME(); +-----------+ | CURTIME() | +-----------+ | 06:22:41 | +-----------+ 1 row in set (0.000 sec)
Микросекунди
Както споменахме, можете да включите микросекунди:
SELECT CURTIME(6);
SELECT SLEEP(3.555555);
SELECT CURTIME(6);
Резултат:
MariaDB [PetHouse]> SELECT CURTIME(6); +-----------------+ | CURTIME(6) | +-----------------+ | 06:25:41.010538 | +-----------------+ 1 row in set (0.000 sec) MariaDB [PetHouse]> SELECT SLEEP(3.555555); SELECT CURTIME(6); +-----------------+ | SLEEP(3.555555) | +-----------------+ | 0 | +-----------------+ 1 row in set (3.561 sec) MariaDB [PetHouse]> SELECT CURTIME(6); +-----------------+ | CURTIME(6) | +-----------------+ | 06:25:44.573544 | +-----------------+ 1 row in set (0.000 sec)
Нулев аргумент
Извикване на SLEEP()
с null
връща 0
без пауза:
SELECT SLEEP(null);
Резултат:
+-------------+ | SLEEP(null) | +-------------+ | 0 | +-------------+ 1 row in set (0.000 sec)
Невалиден брой аргументи
Извикване на SLEEP()
без аргументи или с грешен брой аргументи, води до грешка:
SELECT SLEEP();
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'
И:
SELECT SLEEP(1, 2);
Резултат:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'
Имайте предвид, че изрази, използващи SLEEP()
функции не са безопасни за репликация.