C# Oracle 转换为批量上传

Posted

技术标签:

【中文标题】C# Oracle 转换为批量上传【英文标题】:C# Oracle convert to bulk upload 【发布时间】:2013-04-18 23:26:53 【问题描述】:

我有想要转换成批量插入的现有 c# 代码。

我想使用数组绑定,但我的所有数据都保存在字符串列表中。将此 oracle 存储过程调用转换为处理批量插入的最佳方法是什么?

这里是代码

               for (int i = 0; i < listSize.Count(); i++)
              
              using (OracleCommand cmd = new OracleCommand())
              
                OracleConnection conn;
                conn = new OracleConnection(ConnectionStringOracle);

                cmd.CommandText = "package.insertR";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Connection = conn;
                cmd.Parameters.Add(new OracleParameter("oRetValue", OracleDbType.Varchar2, 10)).Direction = ParameterDirection.Output;
                cmd.Parameters.Add(new OracleParameter("firstList", OracleDbType.Varchar2, 32767));
                cmd.Parameters["firstList"].Value = rd.fl[i];
                cmd.Parameters.Add(new OracleParameter("secondList", OracleDbType.Varchar2, 32767));
                cmd.Parameters["secondList"].Value = rd.sl[i];
                conn.Open();
                try
                
                    cmd.ExecuteNonQuery();
                
                  conn.Close();
               

plsql 中的示例插入是

 PROCEDURE insertr(
      oRetValue OUT varchar2,
      firstListIN   varchar2,           
      secondList IN   varchar2,) AS
BEGIN
 insert into tablename (first1,second1)
values (firstList,secondList);
 END insertr;

【问题讨论】:

请同时包含您的 PL/SQL 过程的源代码。 【参考方案1】:
            using (OracleCommand cmd = new OracleCommand())
          
            OracleConnection conn;
            conn = new OracleConnection(ConnectionStringOracle);
            cmd.ArrayBindCount = listSize.Count();
            cmd.CommandText = "package.insertR";
            cmd.CommandType = CommandType.StoredProcedure;
            cmd.Connection = conn;
            cmd.Parameters.Add(new OracleParameter(":firstList", OracleDbType.Varchar2, 32767));
            cmd.Parameters[":firstList"].Value = rd.fl.ToArray();
            cmd.Parameters.Add(new OracleParameter(":secondList", OracleDbType.Varchar2, 32767));
            cmd.Parameters[":secondList"].Value = rd.sl.ToArray();
            conn.Open();
            try
            
                cmd.ExecuteNonQuery();
            
              conn.Close();

【讨论】:

以上是关于C# Oracle 转换为批量上传的主要内容,如果未能解决你的问题,请参考以下文章

Oracle 批量上传或更新操作(速度可观)

Oracle 批量上传或更新操作(速度可观)

批量上传和触发

Python:在python中使用executemany()批量上传Oracle表的记录

Oracle 批量上传或更新操作(百万数据量也挺快7秒左右)

C# winform如何实现批量上传文件到远程服务器?