2018-10-20

[DB] Stored Procedure On SQL Server

老實說,我很少寫 Stored Procedure,上次寫也已經是2013年的事了。

最近要寫一張報表,因為表格每一個欄位計算複雜,所以不得不使用到 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


參考來源:遜砲賴的爆肝筆記

沒有留言:

張貼留言