No MariaDB,
SLEEP()
é uma função interna que dorme (pausa) pelo número de segundos especificado por seu argumento. Se ininterrupto, ele retorna
0
, se interrompido, retorna 1
. Sintaxe
A sintaxe fica assim:
SLEEP(duration)
Onde
duration
é o número de segundos que você deseja que a função durma. Isso pode incluir microssegundos. Exemplo 1
Segue um exemplo para demonstrar:
SELECT SLEEP(3);
Resultado:
+----------+ | SLEEP(3) | +----------+ | 0 | +----------+ 1 row in set (3.005 sec)
Nesse caso, a operação foi bem-sucedida sem interrupção e, portanto,
0
foi devolvido. Podemos ver que a operação levou 3,005 segundos para ser concluída (3 dos quais provavelmente foram causados pelo
SLEEP()
função). Exemplo 2
Aqui está outro exemplo que usa
SLEEP()
entre duas outras chamadas de função:SELECT CURTIME();
SELECT SLEEP(3);
SELECT CURTIME();
Resultado:
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)
Microsegundos
Como mencionado, você pode incluir microssegundos:
SELECT CURTIME(6);
SELECT SLEEP(3.555555);
SELECT CURTIME(6);
Resultado:
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)
Argumento nulo
Chamando
SLEEP()
com null
retorna 0
sem pausa:SELECT SLEEP(null);
Resultado:
+-------------+ | SLEEP(null) | +-------------+ | 0 | +-------------+ 1 row in set (0.000 sec)
Número inválido de argumentos
Chamando
SLEEP()
sem argumentos, ou com o número errado de argumentos, resulta em um erro:SELECT SLEEP();
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'
E:
SELECT SLEEP(1, 2);
Resultado:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'
Observe que as instruções usando o
SLEEP()
função não são seguros para replicação.