Sqlserver
 sql >> Datenbank >  >> RDS >> Sqlserver

„Abfrage in Waitfor nicht zulässig“ Fehler 101 in SQL Server

Wenn Sie den WAITFOR verwenden -Anweisung in SQL Server und Sie erhalten den folgenden Fehler, wahrscheinlich weil Sie eine Abfrage als Argument angeben.

Msg 101, Level 15, State 1, Line 1
Query not allowed in Waitfor.

Das WAITFOR -Anweisung akzeptiert keine Abfragen für die „Warten auf“-Periode. Es akzeptiert nur eine bestimmte Zeit oder ein Intervall.

Tatsächlich akzeptiert es RECEIVE -Anweisungen, aber dies gilt nur für Service Broker-Nachrichten. Wenn Sie also keine Service Broker-Nachrichten verwenden, ist der obige Fehler ziemlich selbsterklärend.

Beispiel

Hier ist ein Beispiel für den fälschlichen Versuch, eine Abfrage im WAITFOR zu verwenden Aussage.

WAITFOR (SELECT Delay From DelayTable);

Ergebnis:

Msg 101, Level 15, State 1, Line 1
Query not allowed in Waitfor.

Um dieses Problem zu umgehen, müssen Sie eine tatsächliche Zeit oder eine Zeitverzögerung angeben.

Dies wird zum Beispiel funktionieren.

WAITFOR DELAY '00:00:10';

Ergebnis:

Commands completed successfully.
Total execution time: 00:00:09.993

In diesem Fall habe ich eine Zeitverzögerung verwendet, aber Sie können auch eine bestimmte Zeit verwenden.

WAITFOR TIME '10:55:40';