所以我花了相當一段時間圍繞Stack Overflow尋找使這一點的SQL,將填充一個視圖中的字段項目已經工作的天數晚了。在SQL Server的每一行執行一個存儲過程表
的觀點從MS SQL Server上的兩個本地表(2008)連接的數據,我已經寫存儲過程來計算兩三天的工作日內,由被稱爲:
EXECUTE spWorkDaysLate '01/01/20XX', '01/02/20XX'
然而我不知道如何遍歷視圖中的每條記錄,因爲這需要對錶中的每個條目執行。我的表中的相關字段是startDate,endDate,我將使用endDate和startDate作爲參數,使用上述存儲過程的結果填充最終字段(daysLate)。我發現了一些建議網上通過使用表格中的光標命令循環,這將是SQL我想運行:
DECLARE @MyCursor CURSOR;
DECLARE @MyField int;
SET @MyField = 'daysLate' /* Do need to do this, or is the an argument I pass? */
BEGIN
SET @MyCursor = CURSOR FOR
select top 1000 daysLate from dbo.vQualityControl
OPEN @MyCursor
FETCH NEXT FROM @MyCursor
INTO @MyField
WHILE @@FETCH_STATUS = 0
BEGIN
/*
YOUR ALGORITHM GOES HERE
*/
FETCH NEXT FROM @MyCursor
INTO @MyField
END;
CLOSE @MyCursor ;
DEALLOCATE @MyCursor;
END;
我是相當新的SQL,所以我知道的僞代碼,我要運行有點像for each循環,這在我的心目中,我已經在尋找這樣的:
WHILE @@FETCH_STATUS = 0
BEGIN
/* Bad code */
daysLate.Value = EXECUTE spWorkDaysLate @startDate, @endDate;
FETCH NEXT FROM @MyCursor
INTO @MyField
END;
我知道那語法錯誤的,所以我應該在循環到位,使現場「daysLate」被填充與被調用的存儲過程的結果?
首先你想做的事,但在解決方案不看首先是因爲大部分時間,使「daysLate」字段獲取與填充不理解的根源問題,會造成更多的問題 – maSTAShuFu
執行我的存儲過程是什麼做的結果。表格中的每條記錄都應該具有唯一的結果。 –
好的,那麼SP中有什麼? – maSTAShuFu