2015-04-05 56 views
1

我需要檢查表中的任何值是否等於0,如果是,然後等待幾秒鐘。任何運算符與while循環在sql

這裏是我的嘗試:

while(ANY(select CheckIfDone from #CheckValTable)) = 0 
begin 
WAITFOR DELAY '00:00:3'; 
end 

,但我得到這個語法錯誤在ANY=。怎麼我在while循環使用此查詢?

+1

什麼是dbms? SQL服務器/甲骨文/我的SQL? – 2015-04-05 16:24:17

+0

我正在使用sql-server。 – 2015-04-05 16:26:24

回答

4

ANY語法是

scalar_expression { = | < > | ! = | > | > = | ! > | < | < = | ! < } 
    { SOME | ANY } (subquery) 

所以語法將需要

WHILE(0 = ANY (SELECT CheckIfDone 
       FROM #CheckValTable)) 
    BEGIN 
     WAITFOR DELAY '00:00:3'; 
    END 

或者= ANYIN所以你也可以寫

WHILE(0 IN (SELECT CheckIfDone 
      FROM #CheckValTable)) 
    BEGIN 
     WAITFOR DELAY '00:00:3'; 
    END 

但我可能會爲了清晰起見,使用EXISTS

WHILE(EXISTS(SELECT * 
       FROM #CheckValTable 
       WHERE CheckIfDone = 0)) 
    BEGIN 
     WAITFOR DELAY '00:00:3'; 
    END 

但條件永遠無法與你反正顯示爲其他連接不能訪問該臨時表的代碼更改。