Исключение OracleDataReader при выборе столбца типа BLOB-объектов - PullRequest
0 голосов
/ 07 февраля 2020

Я пытаюсь извлечь EmptyBLOB из базы данных Oracle для следующей записи массива байтов в этот столбец, но я получаю сообщение об исключении "ORA-03135: соединение потеряно в контакте" в oracle считывателе данных, когда ExecuteReader. Если я выберу любой другой столбец таблицы в заявлении, он работает нормально. База данных oracle 10g 10.2.0.4.0 - 64 бита, и я использую Oracle .ManagedDataAccess в качестве ODP для. NET

oracleConnection.Open();
OracleCommand nameFile = oracleConnection.CreateCommand();
nameFile.Connection = oracleConnection;
nameFile.Transaction = nameFile.Connection.BeginTransaction();
nameFile.CommandText = "Delete from CF2 WHERE COMPANY_EMPID_FOLIO = :pCOMPANY_EMPID_FOLIO";
nameFile.Parameters.Add("pCOMPANY_EMPID_FOLIO", OracleDbType.Varchar2, 15).Value = sFolio;
nameFile.ExecuteNonQuery();
nameFile.CommandText = "insert into CF2 (COMPANY_EMPID_FOLIO, XML_AND_PDF_ZIP, CREATED_DATE, CREATED_BY, LAST_UPDATE_DATE, LAST_UPDATE_BY) values(:pCOMPANY_EMPID_FOLIO,EMPTY_BLOB(), sysdate, :pUser, sysdate, :pUser)";
nameFile.Parameters.Add("pUser", OracleDbType.Varchar2, 10).Value = sUser;
nameFile.ExecuteNonQuery();
nameFile.Parameters.Clear();

nameFile.CommandText = "SELECT COMPANY_EMPID_FOLIO, XML_AND_PDF_ZIP FROM CF2 WHERE COMPANY_EMPID_FOLIO = :pCOMPANY_EMPID_FOLIO FOR UPDATE"; // XML_AND_PDF_ZIP is BLOP Type Column
nameFile.Parameters.Add("pCOMPANY_EMPID_FOLIO", OracleDbType.Varchar2, 15).Value = sFolio;
OracleDataReader oracleDataReader = nameFile.ExecuteReader(); //DB Lost Contact in this point if a include the blop column in the Select
OracleDataReader oracleDataReader1 = oracleDataReader;

try
{
    oracleDataReader.Read();
    OracleLob oracleLob = oracleDataReader.GetOracleLob(1);
    oracleLob.Write(bytes, 0, (int)bytes.Length);
}
finally
{
    if (oracleDataReader1 != null)
    {
        ((IDisposable)oracleDataReader1).Dispose();
    }
}

Есть ли что-то еще, что я пропускал раньше .read метод?

...