W MariaDB, SLEEP()
jest wbudowaną funkcją, która usypia (wstrzymuje) przez liczbę sekund określoną przez jej argument.
Jeśli nie zostanie przerwany, zwraca 0
, jeśli zostanie przerwane, zwraca 1
.
Składnia
Składnia wygląda tak:
SLEEP(duration)
Gdzie duration
to liczba sekund, przez którą funkcja ma być uśpiona. Może to obejmować mikrosekundy.
Przykład 1
Oto przykład do zademonstrowania:
SELECT SLEEP(3);
Wynik:
+----------+ | SLEEP(3) | +----------+ | 0 | +----------+ 1 row in set (3.005 sec)
W tym przypadku operacja powiodła się bez przerwy, więc 0
został zwrócony.
Widzimy, że operacja zajęła 3,005 sekundy (z czego 3 były prawdopodobnie spowodowane przez SLEEP()
funkcja).
Przykład 2
Oto kolejny przykład, który używa SLEEP()
pomiędzy dwoma innymi wywołaniami funkcji:
SELECT CURTIME();
SELECT SLEEP(3);
SELECT CURTIME();
Wynik:
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)
Mikrosekundy
Jak wspomniano, możesz uwzględnić mikrosekundy:
SELECT CURTIME(6);
SELECT SLEEP(3.555555);
SELECT CURTIME(6);
Wynik:
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)
Argument zerowy
Wywołanie SLEEP()
z null
zwraca 0
bez przerwy:
SELECT SLEEP(null);
Wynik:
+-------------+ | SLEEP(null) | +-------------+ | 0 | +-------------+ 1 row in set (0.000 sec)
Nieprawidłowa liczba argumentów
Wywołanie SLEEP()
bez argumentów lub z niewłaściwą liczbą argumentów powoduje błąd:
SELECT SLEEP();
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'
Oraz:
SELECT SLEEP(1, 2);
Wynik:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'
Zauważ, że instrukcje używające SLEEP()
funkcja nie jest bezpieczna dla replikacji.