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

Làm thế nào để tổ chức vòng lặp while vô hạn trong SQL Server?

Ngoài WHILE 1 = 1 như các câu trả lời khác đề xuất, tôi thường thêm "timeout" vào vòng lặp "infintie" SQL của mình, như trong ví dụ sau:

DECLARE @startTime datetime2(0) = GETDATE();

-- This will loop until BREAK is called, or until a timeout of 45 seconds.
WHILE (GETDATE() < DATEADD(SECOND, 45, @startTime))
BEGIN
    -- Logic goes here: The loop can be broken with the BREAK command.

    -- Throttle the loop for 2 seconds.    
    WAITFOR DELAY '00:00:02';
END

Tôi thấy kỹ thuật trên hữu ích trong một quy trình được lưu trữ được gọi từ một cuộc thăm dò dài AJAX phụ trợ. Việc có vòng lặp ở phía cơ sở dữ liệu sẽ giải phóng ứng dụng khỏi việc phải liên tục nhấn vào cơ sở dữ liệu để kiểm tra dữ liệu mới.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Kiểm tra sao lưu máy chủ SQL

  2. Nối SQL với truy vấn con tương quan trong đó các bảng có liên quan với nhau bằng các phạm vi chồng chéo

  3. Chuyển đổi kiểu dữ liệu hình ảnh thành chuỗi trong SQL Server

  4. truyền tham số trong hàm có giá trị bảng bằng cách sử dụng câu lệnh select

  5. UNION ALL so với OR điều kiện trong truy vấn máy chủ sql