Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Problemy z wywoływaniem procedury składowanej z C# z dużym CLOB

Odkryłem, że jest inny sposób na obejście problemu! Mój kolega z pracy uratował mi dzień, kierując mnie do tego bloga, który mówi:

Ustaw wartość parametru, gdyBeginTransaction została już wywołana na DbConnection.

Czy to może być prostsze? Blog odnosi się do Oracle.DataAccess , ale działa równie dobrze dla System.Data.OracleClient .

W praktyce oznacza to:

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. ADDM na SearchOracle.com

  2. Przekaż listę liczb całkowitych z C# do procedury składowanej Oracle

  3. Jak uzyskać dni robocze lub godziny między dwiema datami?

  4. Filtrowanie dzienników alertów w EM13c

  5. R12.2 Raport gotowości do instalowania poprawek online