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

Cách sử dụng XML để tạo Đối tượng OCI-Lob?

Sau khi thực hiện nhiều cuộc điều tra về điều này, cuối cùng tôi đã hiểu ra điều này. Chúng tôi không thể chuyển đổi trực tiếp một XML sang Đối tượng OCI-Lob. Bởi vì

"Giao diện cuộc gọi Oracle (OCI) là một giao diện lập trình ứng dụng (API) cho phép các ứng dụng được viết bằng C tương tác với một hoặc nhiều Máy chủ Oracle. OCI cung cấp cho chương trình của bạn khả năng thực hiện đầy đủ các hoạt động cơ sở dữ liệu. có thể với cơ sở dữ liệu Oracle9i, bao gồm xử lý câu lệnh SQL và thao tác đối tượng. "

Giả sử giống như Nếu chúng ta có bất kỳ hàm XMLAGG nào với getClobVal () bên cạnh truy vấn mà chúng ta đang lưu trữ dưới dạng "Val", trả về Đối tượng OCI-Lob như bên dưới

$Val = OCI-Lob Object
(
    [descriptor] => Resource id #130
)

hàm dưới đây sẽ cung cấp cho chúng ta Nội dung XML của Đối tượng OCI-Lob [Kiểu dữ liệu CLOB], mà tôi đã đề cập trong Câu hỏi.

$this->$conn = oci_connect('user', 'password', 'connectionString');
$query = "Some SELECT Query";    
$stmt = oci_parse($this->oraConn, $query);      
    oci_execute($stmt);
            while($row = oci_fetch_assoc($stmt)){
                if($row['Val'] != false){
                    printVar($row['Val']->load());
                    break;
                }
            }

Bây giờ, Nếu tôi xóa load () khỏi printVar ($ row ['Val'] -> load ()) và thực hiện printVar ($ row ['Val']), nó sẽ trả lại cho tôi Đối tượng OCI-Lob.

Để có được Đối tượng OCI-Lob Chúng ta cần Oracle Select Query ngoài ra chúng ta có thể chuyển XMLAttributes / Elements bằng getClobVal () hoặc bất kỳ hàm nào. Nhưng Chúng tôi không thể phân tích cú pháp XML và chuyển đổi nó thành Đối tượng OCI-Lob vì nó luôn tương tác với Cơ sở dữ liệu / Máy chủ Oracle.

Vì vậy, để chạy bài kiểm tra Đơn vị PHP những gì tôi đã làm, tôi đã lấy XML và chuyển đổi nó thành một OCIMockObject, Đối tượng sẽ có tất cả các Giá trị XML và phân tích cú pháp nó thành hàm.

Nó hoạt động!

Liên kết này hữu ích để tìm hiểu thêm về Giao diện cuộc gọi Oracle (OCI )

Cảm ơn.




  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ần gỡ bỏ Oracle Favicon

  2. Làm thế nào để xác thực địa chỉ email bằng PL / SQL?

  3. dữ liệu của 4 quý trước

  4. Trang web ngừng hoạt động và nguồn cấp dữ liệu Twitter

  5. Làm thế nào để viết một truy vấn tương tự như GROUP_CONCAT của MySQL trong Oracle?