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

Gọi thủ tục lưu trữ Oracle từ PHP

Để làm việc với con trỏ trong PHP, cần ba bước bổ sung, so với việc truy cập các hàng trực tiếp từ SELECT tuyên bố.

  • Bước đầu tiên là chuẩn bị tài nguyên con trỏ trong PHP bằng oci_new_cursor() mà sau đó bạn sử dụng để liên kết với tham số thích hợp.
  • Bước thứ hai là thêm một tham số trên oci_bind_by_name() chức năng
  • Bước thứ ba, sau khi bạn đã thực thi câu lệnh SQL thông thường, gọi oci_execute() trên tài nguyên con trỏ.

Mã:

//Connection does not change
$db = "(DESCRIPTION=(ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)(HOST = JXYX.com)(PORT = 1521)))(CONNECT_DATA=(SID=DHSJKS)))";
$conn = ocilogon("XXXXXX","XXXXXXXX",$db);          

//Request does not change
$sql = 'BEGIN SP_GET_MY_DATA(:POP, :SEG, :DUR, :VIEW, :PAGE, :OUTPUT_CUR); END;';            

//Statement does not change
$stmt = oci_parse($conn,$sql);                     
oci_bind_by_name($stmt,':POP',$pop);           
oci_bind_by_name($stmt,':SEG',$seg);           
oci_bind_by_name($stmt,':DUR',$dur);           
oci_bind_by_name($stmt,':VIEW',$view);           
oci_bind_by_name($stmt,':PAGE',$page);    

//But BEFORE statement, Create your cursor
$cursor = oci_new_cursor($conn)

// On your code add the latest parameter to bind the cursor resource to the Oracle argument
oci_bind_by_name($stmt,":OUTPUT_CUR", $cursor,-1,OCI_B_CURSOR);

// Execute the statement as in your first try
oci_execute($stmt);

// and now, execute the cursor
oci_execute($cursor);

// Use OCIFetchinto in the same way as you would with SELECT
while ($data = oci_fetch_assoc($cursor, OCI_RETURN_LOBS )) {
    print_r($data);
}

Tôi không rành Oracle (và tiếng Anh) nên bạn nên đọc hướng dẫn này . Có một ví dụ thú vị, hãy xem Thủ tục được lưu trữ và con trỏ tham chiếu chương!

Hy vọng nó 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. Thiếu STOPKEY trên mỗi phân vùng trong gói Oracle để phân trang theo chỉ mục cục bộ

  2. Lưu trữ thu thập dữ liệu Oracle chung

  3. Cách tạo người dùng trong Oracle Multitenant 12c không có tiền tố C ##

  4. Lỗi so sánh PL / SQL trong trình kích hoạt (PLS-00405)

  5. Cột tự động tăng dần - Trình tự làm giá trị mặc định trong Oracle