I created this function to handle the calling of procedures in packages
and it works just fine for procedures, but it doesn't seem to work for
calling functions (IsGenerator) in a package so I want to create another
function called ExecFunction.  I'm not quite sure what I have to change.
The command type?  The SQL passed in?


    Private Const _PackageNameAdd As String = "GENERATORS.ADD_REC"


Calling function that developers code

    Private Sub Add(ByVal R As GeneratorsDataset.C_GENERATORSRow)

        Dim Ps As New Utilities.DBManager.Parameters
        Ps.Add("n_cca_num", R.CCA_NUM, Int32, Input)
        Ps.Add("v_ccs", R.CCS, Varchar2, Input)
        Ps.Add("v_substation_name", R.SUBSTATION_NAME, Varchar2, Input)
        Ps.Add("n_eqp_type_id", R.EQP_TYPE_ID, Int32, Input)
        Ps.Add("v_short_name", R.EQP_SHORT_NAME, Varchar2, Input)
        Ps.Add("v_long_name", R.EQP_LONG_NAME, Varchar2, Input)
        Ps.Add("n_capacity", R.CAPACITY, Double, Input)
        Ps.Add("v_gen_type", R.GEN_TYPE, Varchar2, Input)
        Ps.Add("v_plant_name", R.PLANT_NAME, Varchar2, Input)
        Ps.Add("v_fuel_type", R.FUEL_TYPE, Char, Input)

          Dim OutputPs As New Utilities.DBManager.Parameters
        OutputPs = _DB.ExecProcedure(_PackageNameAdd, Ps)
    End Sub


Utility function

    Public Function ExecProcedure(ByVal SQL As String, ByVal Parms As 
DBManager.Parameters) As Parameters
        '   Author:         Franklin Gray
        '   Created Date:   8/23/2005
        '   Purpose:        Call an Oracle package and return output parms
        '
        '   Process:        Create parm collection
        '                   Call package
        '                   Load output parms into collection
        '
        '   Input:          package name and collection of parameters
        '   Output:         collection
        '
        '   Changes:        (who, what, where, and when)
        '
        If _Conn.State = ConnectionState.Closed Or _Conn.State = 
ConnectionState.Broken Then _Conn.Open()
        Dim cmd As New Oracle.DataAccess.Client.OracleCommand(SQL, _Conn)
        cmd.CommandType = CommandType.StoredProcedure
        Dim P As DBManager.Parameters.Parameter
        'add parms to ADO parm collection
        If Not (Parms Is Nothing) Then
            For Each P In Parms
                Debug.Write(P.Name & " = " & P.Value & ", ")
                cmd.Parameters.Add(P.Name, P.type, P.Value, P.Direction)
            Next
        End If
        'run package
        cmd.ExecuteNonQuery()
        Dim OutputDataTables As New Parameters
        'loop through all parms and find all output and add to collection
        If Not (Parms Is Nothing) Then
            For Each P In Parms
                If P.Direction = ParameterDirection.Output Then
                    P.Value = cmd.Parameters(P.Name)
                    OutputDataTables.Add(P)
                End If
            Next
        End If
        _Conn.Close()
        'return collection of output
        Return OutputDataTables
    End Function

===================================
This list is hosted by DevelopMentorĀ®  http://www.develop.com

View archives and manage your subscription(s) at http://discuss.develop.com

Reply via email to