sql >> Databáze >  >> RDS >> Oracle

Problémy s voláním uložené procedury z C# s velkým CLOB

Zjistil jsem, že existuje jiný způsob, jak problém obejít! Můj kolega zaměstnanec mi zachránil den tím, že mě nasměroval na tento blog, kde je napsáno:

Nastavte hodnotu parametru, když již byla na DbConnection volána BeginTransaction.

Mohlo by to být jednodušší? Blog se týká Oracle.DataAccess , ale stejně dobře to funguje pro System.Data.OracleClient .

V praxi to znamená:

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. Jak správně zapisovat řetězce UTF-8 do MySQL přes rozhraní JDBC

  2. SQLite JSON_GROUP_ARRAY()

  3. Datový model agentury pro veřejné mínění

  4. Jak vytvořit uloženou proceduru v SQL Server