La declaración SQL WAITFOR se usa para bloquear la ejecución de una declaración por lotes, una declaración transnacional o cualquier procedimiento almacenado hasta que se alcance un tiempo específico o cualquier intervalo de tiempo, o una declaración específica modifique o devuelva al menos una fila.
Es muy útil en un requisito de este tipo cuando el script SQL tiene que esperar un tiempo específico antes de ejecutar la siguiente declaración.
Mientras se ejecuta la instrucción SQL WAITFOR, la transacción se ejecuta y no se pueden ejecutar otras solicitudes en la misma transacción.
La declaración SQL WAITFOR se puede usar solo con consultas y no se puede usar con CURSOR y VIEWS.
Sugerencias: incluir la declaración WAITFOR puede retrasar la finalización del proceso de SQL Server y puede generar un mensaje de tiempo de espera.
Sintaxis de la declaración SQL Waitfor
Aquí está la sintaxis de la instrucción WAITFOR. El período de tiempo que se utiliza tanto en Waitfor Delay como en Waitfor Time tiene el formato HH:MI:SS (hora:minuto:segundo). El argumento del período de tiempo del comando Waitfor no puede ser mayor a 24 horas. El valor máximo del parámetro de tiempo es 23:59:59
WAITFOR DELAY '01:01:01' -- hh:mi:ss
WAITFOR TIME '01:01:01' -- hh:mi:ss
Mediante el uso de la sintaxis del comando SQL Waitfor simple anterior, los desarrolladores de SQL Server pueden hacer que el motor SQL espere un momento antes de procesar el código waitfor sql.
WAITFOR DELAY: se utiliza para pausar una consulta durante un tiempo determinado. Tiempo que transcurre antes de que se ejecute una consulta. desea retrasar la ejecución de una consulta en cualquier intervalo de tiempo especificado.
WAITFOR TIME: se utiliza para pausar la ejecución de una consulta hasta que se alcanza una hora específica del día. Hora de ejecutar, una hora específica en un día.
Veamos un ejemplo de WAITFOR con DELAY y TIME
Ejemplo del Comando SQL Waitfor Delay
Aquí hay una muestra de SQL WaitFor Delay que detiene la ejecución de un código sql durante 10 segundos. Después de que transcurran 10 segundos, los scripts sql continúan ejecutándose desde la última línea de código sql donde se detuvo.
SELECT GETDATE() AS CONSULTA1 WAITFOR DELAY '07:25:15' SELECT GETDATE() AS CONSULTA2
Los desarrolladores de SQL pueden ver fácilmente la diferencia de tiempo de 15 segundos entre dos salidas del comando Getdate() de SQL.
Usando el parámetro DELAY o el argumento DELAY, los programadores de SQL pueden especificar la cantidad de tiempo de espera antes de la ejecución.
Comando SQL WaitFor Time
Si es un desarrollador de t-sql y desea que su código sql se ejecute exactamente en un momento específico, puede usar el comando SQL WaitFor Time .
SELECT GETDATE() AS CONSULTA1 WAITFOR TIME '07:36:15' SELECT GETDATE() AS CONSULTA2
Los desarrolladores de SQL pueden leer fácilmente el script de código t-sql anterior.
El resultado del SQL anterior muestra que después de la ejecución del primer comando GETDATE(), el segundo comando getdate() espera para ejecutarse hasta que la hora de SQL waitfor time en Server sea 07:36:15 en formato hh:mi:ss.
Si el valor del parámetro de tiempo del comando Waitfor es mayor que 24:00 (24:00:00), el motor de SQL Server generará el error 148.
La única solución para el error anterior es limitar el valor del parámetro de tiempo con un máximo de 23:59
Repaso
Los desarrolladores de T-SQL usan la instrucción Waitfor para posponer o retrasar la ejecución de un bloque de script t-sql o para establecer el tiempo de ejecución del bloque de código SQL.
Si se desea un retraso en la ejecución de un script SQL, entonces los programadores de SQL usarán el comando waitfor delay .
Si los programadores quieren establecer el tiempo de ejecución de un código SQL, usarán el comando Waitfor Time de tiempo de espera de SQL Server en sus códigos.