Using ODP & VB.NET, I create insert statements with parameters, similar to the following code:
Dim objOracleParameter As OracleParameter
Dim objCommand As New OracleCommand
objOracleParameter = New OracleParameter
objOracleParameter.ParameterName = ":TestField"
objOracleParameter.OracleDbType = [Enum].Parse(GetType(OracleDbType), "Varchar2")
objOracleParameter.Value = "Data1"
Dim strSQL As String = "INSERT INTO MyTable (TestField) Values (:TestField)"
objCommand.Parameters.Add(objOracleParameter)
objCommand.CommandText = strSQL
objCommand.ExecuteNonQuery()
objOracleParameter = New OracleParameter
objOracleParameter.ParameterName = ":TestField"
objCommand = New OracleCommand
objOracleParameter.OracleDbType = [Enum].Parse(GetType(OracleDbType), "Varchar2")
objOracleParameter.Value = "Data2"
Dim strSQL As String = "INSERT INTO MyTable (TestField) Values (:TestField)"
objCommand.Parameters.Add(objOracleParameter)
objCommand.CommandText = strSQL
objCommand.ExecuteNonQuery()
Currently, I execute this code for each record I want to insert, which I believe is inefficient. Instead, I would like to create the command once and then change the parameter value for each new value I want to insert. However, I have been unable to find an example of how to do this and I am not sure if it can't be done. My pseudo code describing what I would like to do is below. Please note that I would like to update only the parameter values and leave everything else unchanged:
Dim objOracleParameter As OracleParameter
Dim objCommand As New OracleCommand
objOracleParameter = New OracleParameter
objOracleParameter.ParameterName = ":TestField"
objOracleParameter.OracleDbType = [Enum].Parse(GetType(OracleDbType), "Varchar2")
objOracleParameter.Value = "Data1"
Dim strSQL As String = "INSERT INTO MyTable (TestField) Values (:TestField)"
objCommand.Parameters.Add(objOracleParameter)
objCommand.CommandText = strSQL
objCommand.ExecuteNonQuery()
objOracleParameter(":TestField").Value = "Data2"
objCommand.ExecuteNonQuery()
Update:
I simplified what I am doing above. The actual use case is in the creation of a generalized routine which allows validating and importing data into various tables by defining the data layout in a table and using it to parse & validate the data. The routine currently works, but I am trying to improve performance.
The largest file I have found which I need to import has > 700,000 lines with ~45 fields each. Implementing performance improvements is critical.