Oracle
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Oracle

Sự cố khi gọi thủ tục được lưu trữ từ C # với CLOB lớn

Tôi thấy rằng có một cách khác để giải quyết vấn đề! Đồng nghiệp của tôi đã tiết kiệm thời gian trong ngày khi chỉ tôi đến blog này, có nội dung:

Đặt giá trị tham số khiBeginTransaction đã được gọi trên DbConnection.

Nó có thể được đơn giản hơn? Blog liên quan đến Oracle.DataAccess , nhưng nó cũng hoạt động tốt cho System.Data.OracleClient .

Trong thực tế, điều này có nghĩa là:

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. Cách lấy tên ngày từ ngày trong Oracle

  2. Cách xuất kết quả truy vấn sang tệp .txt khi sử dụng SQLcl (Oracle)

  3. Cách đặt hơn 1000 giá trị vào mệnh đề Oracle IN

  4. Oracle chuyển đổi TIMESTAMP với múi giờ thành DATE

  5. Oracle:`(+)` làm gì trong mệnh đề WHERE?