Delays processing for the current connection for a specified amount of time or until a given time.
WAITFOR { DELAY time | TIME time } [ CHECK EVERY integer } [ AFTER MESSAGE BREAK ]
WAITFOR DELAY '00:00:03'
WAITFOR DELAY '00:00:00:500'
WAITFOR TIME '20:00'
The WAITFOR statement wakes up periodically (every 5 seconds by default) to check if it has been canceled or if messages have been received. If neither of these has happened, the statement continues to wait.
If DELAY is used, processing is suspended for the given interval. If TIME is specified, processing is suspended until the server time reaches the time specified.
If the current server time is greater than the time specified, processing is suspended until that time on the following day.
WAITFOR provides an alternative to the following statement, and might be useful for customers who choose not to enable Java in the database:
call java.lang.Thread.sleep( <time_to_wait_in_millisecs> )
In many cases, scheduled events are a better choice than using WAITFOR TIME, because scheduled events execute on their own connection.
CHECK EVERY clause—This optional clause controls how often the WAITFOR statement wakes up. By default, WAITFOR wakes up every 5 seconds. The value is in milliseconds, and the minimum value is 250milliseconds.
AFTER MESSAGE BREAK clause—The WAITFOR statement can be used to wait for a message from another connection. In most cases, when a message is received it is forwarded to the application that executed the WAITFOR statement and the WAITFOR statement continues to wait. If the AFTER MESSAGE BREAK clause is specified, when a message is received from another connection, the WAITFOR statement completes. The message text is not forwarded to the application, but it can be accessed by obtaining the value of the MessageReceived connection property.
SQL—Vendor extension to ISO/ANSI SQL grammar.
Sybase—This statement is also implemented by Adaptive Server Enterprise.
None