Oracle 参数绑定

运用参数绑定的形式,对大量数据进行操作,效率很高,但有上限条数需要注意。

Oracle12 C
1048575 以下: 正常结束
1048576 以上: ORA-3146 发生

public void InsertData(OracleConnection con, int count)
        {
            try
            {
                OracleCommand cmd = new OracleCommand();

                string sqlInsert = "INSERT INTO ORACLE_TEST_TABLE (ID,NAME,AGE,MANEY" +
                    ")VALUES(:ID,:NAME,:AGE,:MANEY)";

                int length = count;
                cmd.Connection = con;
                cmd.CommandText = sqlInsert;
                cmd.ArrayBindCount = length;

                int[] idArr = new int[length];
                string[] nameArr = new string[length];
                string[] ageArr = new string[length];
                Decimal[] maneyArr = new Decimal[length];

                OracleParameter idParam = new OracleParameter("ID", OracleDbType.Varchar2);
                idParam.Direction = ParameterDirection.Input;
                idParam.Value = idArr;
                cmd.Parameters.Add(idParam);

                OracleParameter nameParam = new OracleParameter("NAME", OracleDbType.Varchar2);
                nameParam.Direction = ParameterDirection.Input;
                nameParam.Value = nameArr;
                cmd.Parameters.Add(nameParam);

                OracleParameter ageParam = new OracleParameter("AGE", OracleDbType.Varchar2);
                ageParam.Direction = ParameterDirection.Input;
                ageParam.Value = ageArr;
                cmd.Parameters.Add(ageParam);

                OracleParameter maneyParam = new OracleParameter("MANEY", OracleDbType.Varchar2);
                maneyParam.Direction = ParameterDirection.Input;
                maneyParam.Value = maneyArr;
                cmd.Parameters.Add(maneyParam);

                for (int i = 0; i < length; i++)
                {
                    idArr[i] = i;
                    nameArr[i] = "zhang" + i;
                    ageArr[i] = 20 + i + "";
                    maneyArr[i] = Convert.ToDecimal(400.5 + i);
                }

                int result = cmd.ExecuteNonQuery();
                Console.WriteLine("InsertData End");

            }
            catch (Exception ex)
            {
                Console.WriteLine("ERR:" + ex);
                throw new Exception("Insert ERR:" + ex);
            }
        }

你可能感兴趣的:(DB)