0
我這是應該做到以下幾點存儲過程的每一行: -的SQL Server 2008 - 最佳實踐來調用存儲過程爲表
- 執行業務邏輯和選擇的訂閱ID的列表。
- 對於上述選擇的每一行,請調用單獨的存儲過程以獲取爲該特定訂閱ID訂閱的代理列表。
- 將結果插入兩個其他表中。
現在,我已經使用While循環的第2點,並使用IF條件語句來爲不同的訂閱ID調用不同的SP。
注意: - 在第二步中調用的存儲過程的名稱是動態的,因訂閱ID而異。儘管不同的SP返回的結構相同。我無法控制這些程序,也無法將這些過程轉換爲TVF,因此實施交叉應用(如果達到目的)將是一個問題。
我的問題是,有什麼辦法可以避免這種迭代方法,並通過遵循基於集合的方法來實現相同的功能?
您無法真正將存儲過程組合成更大的查詢,並且您排除了通常的建議(轉換爲TVF,保留一個只調用TVF的存儲過程包裝函數,以便其他用戶不受影響) –
恕我直言,在這種情況下我能做的最好的事情就是創建一個包裝函數,它實際上根據Subscription ID調用存儲過程。所以,我的調用順序是我的存儲過程 - > TVF(訂閱ID) - >其他存儲過程(訂閱ID)。真的很想知道是否有比上述做法更好的解決方案。 – Abhirup
TVF無法調用存儲的特效 - 只能以其他方式調用。存儲過程幾乎就是行結束 - 它們可以使用所有其他SQL Server對象,但大多數其他SQL Server對象不能使用存儲的過程。 –