I'm trying to insert large string (over 4.000 characters) into Oracle Clob column, but I keep receiving error "Internal .Net Framework Data Provider error 30". I've tried multiple things, but everything fails when String is longer than 4.000 characters. My last attempt is made from example at bottom of this site: .
Here is my code, I changed DataType Blob to Clob (It doesn't work for Blob too):
try
{
using (var conn = new OracleConnection(_conn))
{
conn.Open();
OracleTransaction transaction = conn.BeginTransaction();
using (OracleCommand cmd = new OracleCommand(SQL, conn))
{
cmd.Transaction = transaction;
cmd.CommandText = "declare xx clob; begin dbms_lob.createtemporary(xx, false, 0); :tempblob := xx; end;";
cmd.Parameters.Add(new OracleParameter("tempblob", OracleType.Clob)).Direction = ParameterDirection.Output;
cmd.ExecuteNonQuery();
OracleLob tempLob = (OracleLob)cmd.Parameters[0].Value;
byte[] bytes = System.Text.Encoding.Unicode.GetBytes(Large_string);
tempLob.BeginBatch(OracleLobOpenMode.ReadWrite);
tempLob.Write(bytes, 0, bytes.Length);
tempLob.EndBatch();
cmd.Parameters.Clear();
cmd.CommandType = CommandType.StoredProcedure;
cmd.Parameters.Add(new OracleParameter("NAME_IN", OracleType.VarChar)).Value = String_1;
cmd.Parameters.Add(new OracleParameter("REASON_IN", OracleType.VarChar)).Value = String_2;
cmd.Parameters.Add(new OracleParameter("ID", OracleType.Clob)).Value =tempLob;
cmd.ExecuteNonQuery();
}
transaction.Commit();
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
What am I missing here ?
P.S. : As stated in question title, I need solution for System.Data.OracleClient. Unfortunally I can't use DataAccess.dll (which probably solves problem,bump). For any help thanks in advance.