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

Lỗi tìm nạp bảng trả về trình tự từ hàm Oracle trong C # trong đó hàm sử dụng dblink cho SQL Server

Đã dành hơn một ngày để điều tra điều này, tôi đã được đưa đến câu trả lời chỉ 10 phút sau khi đăng câu hỏi của mình. Điển hình!

Câu trả lời được tìm thấy ở đây - https://community.oracle.com/thread/659625 - và tất cả những gì cần thiết là bọc mã gọi điện trong một giao dịch. Mã làm việc trông giống như sau:

using (var connection = new OracleConnection(connstring))
{
    connection.Open();

    using (var command = connection.CreateCommand())
    {
        // Start a local transaction
        using (var transaction = connection.BeginTransaction(IsolationLevel.ReadCommitted))
        {
            // Assign transaction object for a pending local transaction
            command.Transaction = transaction;
            command.CommandText = "FNC_AXA_APPTS";
            command.CommandType = CommandType.StoredProcedure;

            OracleParameter retVal = new OracleParameter("PRS", OracleDbType.RefCursor);
            retVal.Direction = ParameterDirection.ReturnValue;
            command.Parameters.Add(retVal);

            command.Parameters.Add(new OracleParameter("EG_PARAM", OracleDbType.Varchar2, 50)).Value = paramValue;

            command.ExecuteNonQuery();

            using (OracleDataReader reader = ((OracleRefCursor)command.Parameters["PRS"].Value).GetDataReader())
            {
                dt.Load(reader);
            }
        }
    }
}

Sự hiểu biết hạn chế của tôi về giải pháp là nếu không có điều này, một giao dịch được cam kết ở cuối SQL Server, điều này khiến con trỏ trả về không thành công trong quá trình lặp lại sau khi được chuyển tới mã .NET. Nếu ai có lời giải thích tốt hơn, vui lòng thêm vào câu hỏi này.



  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âu lệnh FORALL với mệnh đề giá trị-OF Bound trong cơ sở dữ liệu Oracle

  2. INSERT kích hoạt để chèn bản ghi trong cùng một bảng

  3. Chuyển đổi hex thành chuỗi

  4. Oracle - Chuyển đổi giá trị từ hàng thành phạm vi

  5. Cách thêm và xóa thẻ xml của dữ liệu hiện có bên trong cột xmltype trong oracle