我在我的SQL Server數據庫中有很多存儲過程,其中約90%返回一個表。該數據庫已經創建用於存儲C#項目的數據。如何過濾SQL Server中所有現有存儲過程的輸出?
在一個場景中,從應用程序端調用過程時,我希望能夠應用一些通用過濾器來處理輸出。例如,獲得輸出的前100條記錄。這個過濾器應該爲每個過程完成,所以我構建了一個單一的通用靜態類,它只是在我的應用程序中調用過程的一點。然後我過濾每個輸出並返回。
確定這項工作對我來說,但它效率不高,因爲數據庫返回冗餘行,它們將在應用程序端進行過濾。
我決定改進這項工作。我正在考慮遷移過濾器以應用於數據庫端,但不修改任何現有的過程。
我的想法是,我在數據庫中創建一個RunnerProcedure
,它獲取過程名稱及其參數,運行它,應用我的常規過濾器並最終返回結果輸出。
比如我一般的過濾器可能是:
select top 100 * from output
因此,在這種方法中,我要實現這樣的事情:
CREATE PROCEDURE RunnerProcedure
AS
@ProcedureName nvarchar(max),
@ProcedureParameters dbo.ProcedureParametersTableType READONLY
BEGIN
...
// @output = execute @ProcedureName with @ProcedureParameters
Select top 100 * from (@output)
I don't have any idea in implementation! please help.
...
END
我跟我的想法,解釋正是我想要的。如果有可能,請讓我知道如何。請完成它。或者如果這是不可能的,請讓我知道你的建議。
謝謝
它看起來不錯的主意的東西,讓我查一下:) –