我有存储过程,我将执行其结果并将其传递到数据集并返回它但同时我的存储过程中有一个Output参数,我也想返回,如何返回两个数据集和我的函数的整数输出值,还是有更合适的方法来处理这种情况?请提出建议,谢谢。
Public Function SelectCampaignManagementTableListing(ByVal objCampaignManagmentClassBLL As CampaignManagementBLL, ByVal dbConnection As DbConnection, ByVal SortExpression As String, ByVal SortFilterText As String, ByVal SortFilterField As String, ByVal SortDirection As String, ByVal PageNumber As Integer, ByVal PageCount As Integer, ByVal TotalCount As Integer) As DataSet
Dim dbCommand As DbCommand = Nothing
Dim retDS As DataSet = Nothing
Try
If dbConnection.State <> ConnectionState.Open Then
dbConnection.Open()
End If
dbCommand = GetStoredProcedureCommand("Campaign_LoadListing")
dbCommand.Connection = dbConnection
With objCampaignManagmentClassBLL
Select Case SortFilterField
Case "Code"
AddInParameter(dbCommand, "@Code", DbType.String, 50, DBNull.Value)
dbCommand.Parameters("@Code").Value = SortFilterText
Case "Name"
AddInParameter(dbCommand, "@Name", DbType.String, 150, DBNull.Value)
dbCommand.Parameters("@Name").Value = SortFilterText
End Select
Select Case SortDirection
Case "True"
AddInParameter(dbCommand, "@SortOrder", DbType.Boolean, 1, DBNull.Value)
dbCommand.Parameters("@SortOrder").Value = True
Case "False"
AddInParameter(dbCommand, "@SortOrder", DbType.Boolean, 1, DBNull.Value)
dbCommand.Parameters("@SortOrder").Value = False
End Select
AddInParameter(dbCommand, "@SortOrder", DbType.String, 50, DBNull.Value)
If Not String.IsNullOrEmpty(SortDirection) Then
dbCommand.Parameters("@SortOrder").Value = SortDirection
End If
Select Case SortExpression
Case "Code"
'sortType = "@SortByCampaignCode"
AddInParameter(dbCommand, "@SortByCampaignCode", DbType.Boolean, 1, DBNull.Value)
dbCommand.Parameters("@SortByCampaignCode").Value = True
Case "Name"
'sortType = "@SortByCampaignName"
AddInParameter(dbCommand, "@SortByCampaignName", DbType.Boolean, 1, DBNull.Value)
dbCommand.Parameters("@SortByCampaignName").Value = True
Case "Priority"
AddInParameter(dbCommand, "@SortByPriority", DbType.Boolean, 1, DBNull.Value)
dbCommand.Parameters("@SortByPriority").Value = True
End Select
AddInParameter(dbCommand, "@PageNumber", DbType.Int32, 4, DBNull.Value)
If Not IsNothing(PageNumber) Then
dbCommand.Parameters("@PageNumber").Value = PageNumber
End If
AddInParameter(dbCommand, "@PageCount", DbType.Int32, 4, DBNull.Value)
If Not IsNothing(PageCount) Then
dbCommand.Parameters("@PageCount").Value = PageCount
End If
' Heres the output parameter
Dim objOutputParameter As New SqlParameter("@Return_TotalCount", SqlDbType.Int)
dbCommand.Parameters.Add(objOutputParameter)
objOutputParameter.Direction = ParameterDirection.Output
End With
' These are the 2 items I need to return.
retDS = ExecuteDataSet(dbCommand)
Dim tCount As Integer = CInt(dbCommand.Parameters("@Return_TotalCount").Value)
Catch ex As Exception
Throw New DALException(ex, dbCommand, Caching.GetCustomerCodeCookie(), "SelectCampaignManagementTableListing")
Finally
If Not dbCommand Is Nothing Then
dbCommand.Dispose()
End If
End Try
Return retDS
End Function
答案 0 :(得分:8)
您有多种选择:
答案 1 :(得分:2)
可以使用具有DataSet属性和intiger属性的类或结构。您可以通过在函数
中设置值来从函数返回该类或结构 许多其他选择的链接很少:答案 2 :(得分:1)
最简单的方法是,如果您的数据类型相同(字符串,整数等),然后将它们放入列表并传回该列表。没有任何自定义。
答案 3 :(得分:0)
您可以创建一个封装DataSet对象和输出参数的自定义类,并通过函数名返回该函数,或者在函数中包含一个out参数以返回存储过程out参数并继续返回DataSet通过您目前的功能名称。
答案 4 :(得分:0)
除了Joviee提供的优秀答案之外,您还可以传递Action(Of Integer)
或Action(Of Exception)
。使用操作使您能够从代码中返回零个或多个结果,而不是只有选项强制您执行的操作。