Oracle
 sql >> база данни >  >> RDS >> Oracle

Проблеми при извикване на съхранена процедура от C# с голям CLOB

Открих, че има друг начин за заобикаляне на проблема! Моят колега служител ми спаси деня, като ме насочи към този блог, който гласи:

Задайте стойността на параметъра, когато BeginTransaction вече е извикана на DbConnection.

Може ли да е по-просто? Блогът е свързан с Oracle.DataAccess , но работи също толкова добре за System.Data.OracleClient .

На практика това означава:

varcmd = new OracleCommand("LoadXML", _oracleConnection);
cmd.CommandType = CommandType.StoredProcedure;

var xmlParam = new OracleParameter("XMLFile", OracleType.Clob);
cmd.Parameters.Add(xmlParam);

// DO NOT assign the parameter value yet in this place

cmd.Transaction = _oracleConnection.BeginTransaction();
try
{
    // Assign value here, AFTER starting the TX
    xmlParam.Value = xmlWithWayMoreThan4000Characters;

    cmd.ExecuteNonQuery();
    cmd.Transaction.Commit();
}
catch (OracleException)
{
    cmd.Transaction.Rollback();
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Oracle Concurrent Manager – CP анализатор за E-Business Suite

  2. SQL разработчик 4

  3. Функция LISTAGG:резултатът от конкатенацията на низове е твърде дълъг

  4. Как да върнете списък с валидни часови зони в базата данни на Oracle

  5. Webrick реагира много бавно. Как да го ускорим?