只要把参数的类型指定为OracleType.Blob就会报错。
错误内容:
无法获取错误消息(-1) (100)。
代码如下:
static void Main(string[] args)
        {
            string sConnection = "User ID=test;Data Source=handing;Password=test";
            OracleConnection con = new OracleConnection(sConnection);
            con.Open();
            Console.WriteLine("打开成功!");            OracleCommand cmd = con.CreateCommand();
            OracleTransaction transaction = con.BeginTransaction();
            cmd.Transaction = transaction;
            try
            {
                // 直接写要插入的值就没问题。但是参数的长度还是不能超过4000字节
                //string SQL = "INSERT INTO clob_test2(id,blob_test) VALUES(111,'6666666')";
                //cmd.CommandText = SQL;
                //cmd.ExecuteNonQuery();                // 使用参数就报错
                string SQL = "INSERT INTO clob_test2(id,blob_test) VALUES(111,:test)";
                cmd.CommandText = SQL;
                byte[] bText = { 0x60, 0x60, 0x60, 0x60, 0x60 };
                cmd.Parameters.Add("test", OracleType.Blob);
                cmd.Parameters["test"].Value = bText;
                cmd.ExecuteNonQuery();   //在这里报错                transaction.Commit();
                Console.WriteLine("成功!");
            }
            catch(System.Data.OracleClient.OracleException ex)
            {
                transaction.Rollback();
                Console.WriteLine("失败!" + ex.Message);
            }            con.Close();
            Console.WriteLine("结束");
            Console.Read();
        }