【发布时间】:2017-05-22 09:30:01
【问题描述】:
以下代码 sn-p 用于将数据从 SQL DB 批量插入 Oracle 数据库。
我在 oracle 数据库中使用了带有 2 个参数(int 和 string)的存储过程
执行查询时出现以下错误。请帮我解决这个问题。或为批量数据插入提出任何好的解决方案。
我的查询:
List<int> arrPersonId = new List<int>();
foreach (DataRow row in ds.Tables[0].Rows)
{
arrPersonId.Add(Convert.ToInt32(row["USER_ID"]));
}
List<string> arrPersonName = new List<string>();
foreach (DataRow row in ds.Tables[0].Rows)
{
arrPersonName.Add(row["USERNAME"].ToString());
}
OracleConnection connection = new OracleConnection();
connection.ConnectionString = DAKObj.GetOraConnectionString();
OracleCommand command = new OracleCommand();
command.Connection = connection;
command.CommandType = CommandType.StoredProcedure;
command.CommandText = "sp_InsertByODPNET";
command.Parameters.Add("@PersonId", OracleDbType.Int32);
command.Parameters[0].Value = arrPersonId;
command.Parameters.Add("@PersonName", OracleDbType.Varchar2, 100);
command.Parameters[1].Value = arrPersonName;
command.ArrayBindCount = arrPersonId.Count;
connection.Open();
command.ExecuteNonQuery();
connection.Close();
错误:-
“System.InvalidCastException”类型的异常发生在 Oracle.DataAccess.dll 但未在用户代码中处理
附加信息:无法转换类型的对象 'System.Collections.Generic.List`1[System.Int32]' 输入 'System.Array'
【问题讨论】:
-
您是否尝试过使用表值参数进行批量插入?可以为您带来巨大的性能优势。
-
@RahulKishore :请您解释一下……谢谢
标签: c# sql asp.net sql-server oracle