从功能返回2项

k80*_*0sg 2 c# sql vb.net asp.net

我有存储过程,我将执行其结果并将其传递到数据集并返回它,但同时我的存储过程中有一个输出参数,我也想返回,如何返回数据集和整数使用我的函数输出值,还是有更合适的方法来处理这种情况?请好好的建议,谢谢.

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
Run Code Online (Sandbox Code Playgroud)

Mat*_*ing 8

你有很多选择:

  1. 定义自己的自定义类,公开输出属性,并返回该类的实例.
  2. 返回包含输出值的System.Tuple实例.
  3. 使用输出参数返回输出值.