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

Xếp hàng nâng cao Oracle với .Net

Tôi không thể giúp bạn về các phương pháp hay nhất, nhưng tôi có thể giúp bạn với Hàng đợi UDT. Trước khi xử lý hàng đợi, bạn cần tạo các kiểu tùy chỉnh từ cơ sở dữ liệu vào dự án C # của mình. Giả sử bạn đã cài đặt Visual Studio và ODP.NET, bạn chỉ cần kết nối với cơ sở dữ liệu thông qua Server Explorer, xác định vị trí các UDT của bạn, nhấp chuột phải và chọn "Tạo lớp tùy chỉnh ..." Các lớp này ánh xạ trực tiếp đến các UDT của bạn và được sử dụng để lưu trữ thông tin Dequeued.

Đây là một ví dụ về mã bạn sẽ sử dụng để xếp hàng một thư:

private void main(string[] args)
{
    string _connstring = "Data Source=host/DB;User
    Id=USER;Password=PASSWORD1;";

        OracleConnection _connObj = new OracleConnection(_connstring);

        // Create a new queue object
        OracleAQQueue _queueObj = new OracleAQQueue("UDT_NAME", _connObj);

        _connObj.Open();

        OracleTransaction _txn = _connObj.BeginTransaction();

        // Set the payload type to your UDT
        _queueObj.MessageType = OracleAQMessageType.Udt;
        _queueObj.UdtTypeName = "UDT_NAME";

        // Create a new message object
        OracleAQMessage _msg = new OracleAQMessage();

        // Create an instance of JobClass and pass it in as the payload for the
        // message
        UDT_CUSTOM_CLASS _custClass = new UDT_CUSTOM_CLASS();
        // Load up all of the properties of custClass
        custClass.CustString = "Custom String";
        custClass.CustInt = 5;

        _msg.Payload = custClass;

        // Enqueue the message
        _queueObj.EnqueueOptions.Visibility = OracleAQVisibilityMode.OnCommit;
        _queueObj.Enqueue(_msg);

        _txn.Commit();
        _queueObj.Dispose();
        _connObj.Close();
        _connObj.Dispose();
        _connObj = null;
}

Đây là một quá trình tương tự như dequeue:

private void main(string[] args)
{
    string _connstring = "Data Source=host/DB;User
    Id=USER;Password=PASSWORD1;";

    OracleConnection _connObj = new OracleConnection(_connstring);

    // Create a new queue object
    OracleAQQueue _queueObj = new OracleAQQueue("UDT_NAME", _connObj);

    // Set the payload type to your UDT
    _queueObj.MessageType = OracleAQMessageType.Udt;
    _queueObj.UdtTypeName = "UDT_NAME";

    _connObj.Open();

    OracleTransaction _txn = _connObj.BeginTransaction();

    // Dequeue the message.
    _queueObj.DequeueOptions.Visibility = OracleAQVisibilityMode.OnCommit;
    _queueObj.DequeueOptions.Wait = 10;
    OracleAQMessage _deqMsg = _queueObj.Dequeue();

    UDT_CUSTOM_CLASS data = (UDT_CUSTOM_CLASS)_deqMsg.Payload;

    // At this point, you have the data and can do whatever you need to do with it

    _txn.Commit();
    _queueObj.Dispose();
    _connObj.Close();
    _connObj.Dispose();
    _connObj = null;

}

Đó là một ví dụ "đơn giản". Tôi đã rút hầu hết điều đó ra khỏi Pro ODP.NET cho Cơ sở dữ liệu Oracle 11g của Ed Zehoo. Đó là một cuốn sách xuất sắc và tôi thực sự khuyên bạn nên dùng nó để giúp bạn hiểu rõ hơn về những điều bên trong OPD.NET. Bạn có thể mua sách điện tử tại đây: http://apress.com/book/view/9781430228202 . Nếu bạn nhập mã phiếu giảm giá MACWORLDOC, bạn có thể nhận được sách điện tử với giá $ 21,00. Ưu đãi đó chỉ tốt cho sách điện tử có định dạng PDF được bảo vệ bằng mật khẩu. Tôi hy vọng điều này sẽ hữu ích!



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Hàm JSON_QUERY () trong Oracle

  2. Bỏ nhiều cột:PLSQL và user_tab_cols

  3. Tạo đối tượng ODP.Net OracleConnection 32-bit rất chậm

  4. Cách sử dụng bảng số trong trạng thái CHỌN VÀO trạng thái

  5. Oracle SQL - Cách lấy số lượng dựa trên ngày thành nhiều cột trong ORACLE