我正在尝试将大字符串(超过4.000个字符)插入Oracle Clob列,但是我一直收到错误“ 内部.Net Framework数据提供程序错误30 ”。我已经尝试了多种方法,但是当String长度超过4.000个字符时,一切都会失败。我的最后一次尝试是通过底部of this site的示例进行的:。
这是我的代码,我将数据类型 Blob 更改为 Clob (它对Blob也无效):
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);
}
我在这里想念什么?
P.S。 :如问题标题所述,我需要 System.Data.OracleClient 的解决方案。不幸的是,我无法使用 DataAccess.dll (这可能解决了问题)。任何帮助,谢谢。