Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

“Truy vấn không được phép trong Waitfor” Lỗi 101 trong SQL Server

Nếu bạn đang sử dụng WAITFOR trong SQL Server và bạn gặp lỗi sau, có thể là do bạn đang cung cấp một truy vấn làm đối số của nó.

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

WAITFOR tuyên bố không chấp nhận các truy vấn cho khoảng thời gian "chờ đợi" của nó. Nó chỉ chấp nhận một thời gian hoặc một khoảng thời gian cụ thể.

Trên thực tế, nó chấp nhận RECEIVE nhưng điều này chỉ áp dụng cho các thông báo của Nhà môi giới dịch vụ, vì vậy nếu bạn không sử dụng các thông báo của Nhà môi giới dịch vụ, thì lỗi trên khá dễ hiểu.

Ví dụ

Dưới đây là một ví dụ về việc cố gắng sử dụng một truy vấn không chính xác trong WAITFOR tuyên bố.

WAITFOR (SELECT Delay From DelayTable);

Kết quả:

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

Để khắc phục sự cố này, bạn cần cung cấp thời gian thực tế hoặc thời gian trễ.

Ví dụ:điều này sẽ hoạt động.

WAITFOR DELAY '00:00:10';

Kết quả:

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

Trong trường hợp này, tôi đã sử dụng thời gian trễ, nhưng bạn cũng có thể sử dụng một thời gian cụ thể.

WAITFOR TIME '10:55:40';

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. AT TIME ZONE - một tính năng mới được yêu thích trong SQL Server 2016

  2. Trả lại tất cả các hàng từ một phân vùng cụ thể trong SQL Server (T-SQL)

  3. Tìm kiếm mờ SQL Server với Phần trăm so khớp

  4. @@ ROWCOUNT - Nhận số lượng hàng bị ảnh hưởng bởi câu lệnh cuối cùng trong SQL Server

  5. Tách chuỗi được phân cách bằng dấu phẩy và chèn vào bảng (int)