in and out oracle parameters in vb.net result in null errors

Collapse
X
 
  • Time
  • Show
Clear All
new posts
  • kgp4death
    New Member
    • Jun 2014
    • 2

    in and out oracle parameters in vb.net result in null errors

    so this code works with just the out parameter but then when you add in parameters weird nulls start showing up and also the straight in parameters work too so it is just when there are both in and out parameters. and i have tried the out parameter at end and beginning of parameter list

    the part with problems is the in and out parameters do not want to coexist
    Code:
                cmd.Parameters.Add("PKEY", OracleDbType.Int64, ParameterDirection.Output)
                For Each kvp As KeyValuePair(Of String, String) In sqlParams
                    Dim newParam As New OracleParameter(kvp.Key, OracleDbType.Varchar2, kvp.Value, Data.ParameterDirection.Input)
                    newParam.Size = 400
                    cmd.Parameters.Add(newParam)
                Next
    This works

    Code:
    Public Shared Sub Run_Oracle_Query(ByVal queryToRun As String, ByVal sqlParams As Dictionary(Of String, String))
            Dim dbConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("ITSS").ConnectionString
            Dim con As OracleConnection = New OracleConnection(dbConnString)
            Dim cmd = con.CreateCommand()
            Try
                con.Open()
                cmd.CommandText = queryToRun
                cmd.CommandType = CommandType.Text
                For Each kvp As KeyValuePair(Of String, String) In sqlParams
                    cmd.Parameters.Add(kvp.Key, kvp.Value)
    
                Next
                cmd.ExecuteNonQuery()
                'log all sql queryies very expensive operation
                LogThisString("Log All queries: " & queryToRun, "Always")
            Catch ex As OracleException ' catches only Oracle errors
                OracleExceptionLogging(ex.Number, queryToRun, ex)
            Catch ex As Exception
                LogThisString("General Error SQL: " + ex.Message.ToString(), "Always")
                ' MsgBox("Could Not Perform This Database Operation")
            Finally
                con.Close()
                cmd.Dispose()
                con.Dispose()
            End Try
        End Sub
    This works

    Code:
      Public Shared Function Run_Insert_Oracle_Query_Return_ID(ByVal queryToRun As String, ByVal IDcolumnName As String) As String
            Dim dbConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("ITSS").ConnectionString
            Dim con As OracleConnection = New OracleConnection(dbConnString)
            Dim cmd = con.CreateCommand()
            Dim strUkey As String = ""
            Try
                con.Open()
                cmd.CommandText = queryToRun & " RETURNING " & IDcolumnName & " INTO :UKEY"
                cmd.CommandType = CommandType.Text
                cmd.Parameters.Add("PKEY", OracleDbType.Int64, ParameterDirection.Output)
                cmd.ExecuteNonQuery()
                strUkey = cmd.Parameters("PKEY").Value.ToString
                Return strUkey
            Catch ex As OracleException ' catches only Oracle errors
                OracleExceptionLogging(ex.Number, queryToRun, ex)
    
            Catch ex As Exception
                LogThisString("General Error SQL: " + ex.Message.ToString(), "Always")
                PopupMsgBox("Database Error", "Database Integrity Constants Violated SQL Operation Will Not Be Executed")
            Finally
                con.Close()
                cmd.Dispose()
                con.Dispose()
            End Try
    
            Return strUkey
        End Function
    This does not work

    Code:
    Public Shared Function Run_Insert_Oracle_Query_Return_ID(ByVal queryToRun As String, ByVal IDcolumnName As String, ByVal sqlParams As Dictionary(Of String, String)) As String
    
            Dim dbConnString As String = System.Configuration.ConfigurationManager.ConnectionStrings("ITSS").ConnectionString
            Dim con As OracleConnection = New OracleConnection(dbConnString)
            Dim cmd = con.CreateCommand()
            Dim strUkey As String = ""
            Try
                con.Open()
                cmd.CommandText = queryToRun & " RETURNING " & IDcolumnName & " INTO :UKEY"
                cmd.CommandType = CommandType.Text
                cmd.Parameters.Add("PKEY", OracleDbType.Int64, ParameterDirection.Output)
                For Each kvp As KeyValuePair(Of String, String) In sqlParams
                    Dim newParam As New OracleParameter(kvp.Key, OracleDbType.Varchar2, kvp.Value, Data.ParameterDirection.Input)
                    newParam.Size = 400
                    cmd.Parameters.Add(newParam)
                Next
                cmd.ExecuteNonQuery()
                strUkey = cmd.Parameters("PKEY").Value.ToString
                Return strUkey
            Catch ex As OracleException ' catches only Oracle errors
                OracleExceptionLogging(ex.Number, queryToRun, ex)
    
            Catch ex As Exception
                LogThisString("General Error SQL: " + ex.Message.ToString(), "Always")
                PopupMsgBox("Database Error", "Database Integrity Constants Violated SQL Operation Will Not Be Executed")
            Finally
                con.Close()
                cmd.Dispose()
                con.Dispose()
            End Try
    
            Return strUkey
        End Function
  • kgp4death
    New Member
    • Jun 2014
    • 2

    #2
    crap so i guess it does look for order asnd the output does need to be at end like this.....this works solved my own problem

    Code:
                For Each kvp As KeyValuePair(Of String, String) In sqlParams
                    Dim newParam As New OracleParameter(kvp.Key, OracleDbType.Varchar2, kvp.Value, Data.ParameterDirection.Input)
                    newParam.Size = 400
                    cmd.Parameters.Add(newParam)
                Next
    cmd.Parameters.Add("PKEY", OracleDbType.Int64, ParameterDirection.Output)

    Comment

    Working...