sql >> Database >  >> RDS >> Oracle

Problemen met het aanroepen van opgeslagen procedure vanuit C# met grote CLOB

Ik ontdekte dat er is een andere manier om het probleem te omzeilen! Mijn collega heeft mijn dag gered door me te wijzen op deze blog, die zegt:

Stel de parameterwaarde in wanneerBeginTransaction al is aangeroepen op de DbConnection.

Kan het eenvoudiger? De blog heeft betrekking op Oracle.DataAccess , maar het werkt net zo goed voor System.Data.OracleClient .

In de praktijk betekent dit:

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. Een rapport groeperen op meerdere velden in Access 2016

  2. Tips voor het migreren van eigen naar open source databases

  3. Android SQLite invoegen of bijwerken

  4. Externe MySQL-verbinding inschakelen:ERROR 1045 (28000):Toegang geweigerd voor gebruiker