2011-06-08 30 views
2

我正在運行一組sql查詢,並且在所有查詢都運行之前它們不報告行影響。無論如何,我可以得到增量反饋。直到所有查詢都執行完爲止,SQL查詢不是「報告」

例子:

DECLARE @HowManyLastTime int 

SET @HowManyLastTime = 1 

WHILE @HowManyLastTime <> 2400000 
BEGIN 

     SET @HowManyLastTime = @HowManyLastTime +1 
    print(@HowManyLastTime) 
END 

這並不表明計數,直到循環完成。我如何在運行時顯示計數?

+0

當我在sql2008上運行它時,您的查詢顯示它在消息選項卡中運行的計數。 – Jimbo 2011-06-08 13:00:33

+0

是/你可以在你的陳述之間放置'GO'嗎?如果你把GO放進去,你的變量將會超出範圍,所以要小心。 – 2011-06-08 13:56:10

回答

2

要將記錄數和其他數據刷新到客戶端,您需要在NOWAIT中使用RaisError。相關的問題和鏈接:

在SSMS中,這將正常工作。對於其他客戶端,在查詢執行完成之前,您可能不會收到客戶端的響應。

+0

我試過'RAISERROR('Your message',0,1)WITH NOWAIT',但仍然有相同的問題 – Dan 2011-06-08 12:19:58

+0

你在使用什麼客戶端?這是來自您的應用程序(如ASP.Net)還是SSMS或其他某種環境? – Tao 2011-06-08 12:58:18

+1

如果您使用的是SSMS,您的用戶界面是否可能被設置爲「結果到網格」,而您只是沒有切換到UI中的「消息」選項卡? (如果沒有結果集,則SSMS在查詢完成時自動切換到「消息」選項卡,但以前不會) – Tao 2011-06-08 13:01:29

0

SQL傾向於「基於集合」,並且您在程序上思考並試圖使其系統化。在SQL中這樣做確實沒有意義。

我會問你做這件事的動機,還有什麼更好的可以嘗試。