我有一個vb.net函數,它根據傳入函數的參數創建幾個存儲過程。如何使用SQL創建多個存儲過程
我想將這個vb.Net移動到一個單獨的SQL文件(出於維護的原因),但我不知道如何在不創建7個單獨的存儲過程的情況下在SQL中重新創建它。
我創建了總共20個存儲過程,我並不想在SQL文件中創建這麼多,因爲維護將是一場噩夢。我想知道如果有我如何做它VB.Net下面類似的解決方案:
Private Sub CreateStoredProcedures()
CreateSP("SummaryNone", "YEAR([sale].[DateTime])")
CreateSP("SummaryUser", "[sale].[User]")
CreateSP("Summarysale", "[sale].[sale]")
CreateSP("SummaryBatch", "[sale].[Batch]")
CreateSP("SummaryDay", "dbo.FormatDateTime([sale].[DateTime], 'yyyy-mm-dd')")
CreateSP("SummaryMonth", "dbo.FormatDateTime(dbo.DateSerial(YEAR([sale].[DateTime]), MONTH([sale].[DateTime]), 1), 'yyyy-mm-dd')")
CreateSP("SummaryYear", "Year([sale].[DateTime])")
Return
End Sub
Private Sub CreateSP(ByVal vName As String, ByVal vGroup As String)
Dim CommandText As String = _
"CREATE PROCEDURE " & vName _
& " @StartDate varchar(50)," _
& " @EndDate varchar(50)" _
& " AS " _
& " SELECT " & vGroup & " AS GroupField," _
& " Sum([Project].[NumProject]) AS TotalProject," _
& " Sum([Project].[Title]) AS SumTitle," _
& " Sum([Project].[Duration]) AS SumDuration," _
& " Sum([Project].[Info]) AS SumInfo," _
& " Sum([Customer].[NumCustomer]) AS TotalNumCustomer," _
& " Sum([Orders].[NumOrders]) AS TotalNumOrders," _
& " Sum([OrderInspection].[NumInspects]) AS TotalNumInspects," _
& " Sum([OrderInspection].[NumFails]) AS TotalNumFails," _
& " Sum([CustomerInspection].[NumInspects]) AS TotalNumCustomerInspectionInspects," _
& " Sum([CustomerInspection].[NumFails]) AS TotalNumCustomerInspectionFails," _
& " Sum([Measurements].[NumMeasurements]) AS TotalNumMeasurementss" _
& " FROM ((((((sale LEFT JOIN Project ON [sale].[saleId]=[Project].[saleId])" _
& " LEFT JOIN Customer ON [Project].[PrintId]=[Customer].[PrintId])" _
& " LEFT JOIN Orders ON [Project].[PrintId]=[Orders].[PrintId])" _
& " LEFT JOIN OrderInspection ON [Project].[PrintId]=[OrderInspection].[PrintId])" _
& " LEFT JOIN CustomerInspection ON [Project].[PrintId]=[CustomerInspection].[PrintId])" _
& " LEFT JOIN Measurements ON [Project].[PrintId]=[Measurements].[PrintId])" _
& " WHERE [sale].[DateTime] BETWEEN dbo.FormatDateTime((@StartDate), 'yyyy-mm-dd')" _
& " AND dbo.FormatDateTime((@Enddate),'yyyy-mm-dd')" _
& " GROUP BY " & vGroup & "" _
& " ORDER BY " & vGroup & ";"
SqlExecuteNonQuery(CommandText)
return
End Sub
我期待着您的意見和答覆。
謝謝
謝謝,它確實有道理。我會考慮這樣做。 – Belliez 2009-02-10 09:16:23
好東西,讓我們知道如果你需要進一步的援助。 – 2009-02-10 11:43:16