最近要寫一張報表,因為表格每一個欄位計算複雜,所以不得不使用到 Stored Procedure 事先計算好,報表負責呈現就好,才不必等太久。
這次 DB 是 SQL Server,想說參考之前 Oracle 的 Stored Procedure 文章看看應該就行了,沒想到差異不小@@,就基本的跑迴圈來說就完成不同了。
Google 了一下大都用 Cursor,但是普遍說效能不好不建議,加上語法不好理解(對我來說...),然後找到以下的方法,覺得很適合我,便記錄下來當參考。
declare @Count --將要跑迴圈的資料抓出來放到#TempTable Select Product_ID into #TempTable From Product --計算 #TempTable 資料筆數,要用在跑迴圈 Select @Count = count(Product_ID) from #TempTable --開始跑迴圈 while(@Count > 0) begin Select top 1 @Product_ID=Product_ID From #TempTable --start do something --將處理好的資料從 #TempTable 刪除 Delete from #TempTable where Product_ID=@Product_ID --重新計算 #TempTable 資料筆數,要用在跑迴圈 Select @Count = count(Product_ID) from #TempTable end
參考來源:遜砲賴的爆肝筆記
沒有留言:
張貼留言