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

gọi một hàm Oracle thực hiện chèn / cập nhật từ PHP?

Một hàm sử dụng DML không thể được gọi trong SELECT tuyên bố bất kể ngôn ngữ gọi là gì.

Nếu bạn muốn thực hiện DML và trả về một giá trị, sẽ có ý nghĩa hơn nhiều khi tạo một thủ tục được lưu trữ với OUT tham số thay vì sử dụng một hàm. Vì vậy, nó sẽ có ý nghĩa hơn nhiều khi

CREATE OR REPLACE PROCEDURE proc_name_return( p_1    IN NUMBER,
                                              p_2    IN NUMBER,
                                              p_ret OUT VARCHAR2 )
AS
BEGIN
  p_ret := pkg_tools.replace.site( p_1, p_2 );
END;

và sau đó gọi thủ tục được lưu trữ đó từ PHP

$sql = 'BEGIN proc_name_return( :p_1, :p_2, :p_ret ); END;';

Nếu bạn không muốn làm điều đó, tôi đoán là bạn cũng có thể làm điều gì đó như thế này (phỏng theo một trong những đoạn mã trên trang 164 của Hướng dẫn sử dụng nền tảng PHP và Oracle )

<?php
$c = oci_connect('hr', 'hrpwd', 'localhost/XE');
$s = oci_parse($c, "begin :ret :=pkg_tools.replace_site(1121,3343); end;");
oci_bind_by_name($s, ':ret', $r, 200);
oci_execute($s);
echo "Result is: ".$r;
?>



  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 tối ưu hóa SQL cập nhật chạy trên bảng Oracle với 700 triệu hàng

  2. SQL để bỏ qua các hàng có thuộc tính cụ thể từ một bảng đã nối

  3. Cách thực hiện một thủ tục với thủ tục DBMS_SCHEDULER.CREATE_JOB

  4. Oracle SQL * Loader có thể xử lý XML không?

  5. Giới thiệu về PL / SQL Thu thập hàng loạt trong Cơ sở dữ liệu Oracle