sql >> Base de Datos >  >> RDS >> MariaDB

Cómo funciona SLEEP() en MariaDB

En MariaDB, SLEEP() es una función integrada que duerme (pausa) durante el número de segundos especificado por su argumento.

Si no se interrumpe, devuelve 0 , si se interrumpe, devuelve 1 .

Sintaxis

La sintaxis es así:

SLEEP(duration)

Donde duration es el número de segundos que desea que la función duerma. Esto puede incluir microsegundos.

Ejemplo 1

Aquí hay un ejemplo para demostrarlo:

SELECT SLEEP(3);

Resultado:

+----------+
| SLEEP(3) |
+----------+
|        0 |
+----------+
1 row in set (3.005 sec)

En este caso, la operación tuvo éxito sin interrupción, por lo que 0 fue devuelto.

Podemos ver que la operación tardó 3.005 segundos en completarse (3 de los cuales fueron presumiblemente causados ​​por SLEEP() función).

Ejemplo 2

Aquí hay otro ejemplo que usa SLEEP() entre otras dos llamadas a funciones:

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 se mencionó, puede incluir microsegundos:

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

Llamando a SLEEP() con null devuelve 0 sin pausa:

SELECT SLEEP(null);

Resultado:

+-------------+
| SLEEP(null) |
+-------------+
|           0 |
+-------------+
1 row in set (0.000 sec)

Número de argumentos no válido

Llamando a SLEEP() sin argumentos, o con el número incorrecto de argumentos, da como resultado un error:

SELECT SLEEP();

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'

Y:

SELECT SLEEP(1, 2);

Resultado:

ERROR 1582 (42000): Incorrect parameter count in the call to native function 'SLEEP'

Tenga en cuenta que las declaraciones que usan SLEEP() no son seguras para la replicación.