0

一括挿入に変換したい既存の 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;
4

1 に答える 1

0
            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();
于 2013-04-19T22:01:39.207 に答える