Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

panggil fungsi Oracle yang melakukan penyisipan/pembaruan dari PHP?

Fungsi yang melakukan DML tidak dapat dipanggil dalam SELECT pernyataan terlepas dari bahasa panggilan.

Jika Anda ingin melakukan DML dan mengembalikan nilai, akan lebih masuk akal untuk membuat prosedur tersimpan dengan OUT parameter daripada menggunakan fungsi. Jadi akan lebih masuk akal untuk

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;

dan kemudian panggil prosedur tersimpan itu dari PHP

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

Jika Anda tidak ingin melakukan itu, tebakan saya adalah Anda juga dapat melakukan hal seperti ini (diadaptasi dari salah satu skrip di halaman 164 dari Manual PHP dan Oracle Bawah Tanah )

<?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. Bagaimana cara mengurangi tahun dari sysdate

  2. Nilai Urutan Oracle tidak dipesan

  3. Tambahkan kolom baru dan isi dengan sebagian kolom lain di Oracle SQL

  4. Kursus kilat penyetelan kinerja Oracle PL/SQL

  5. Iterasi pada baris tabel kedua untuk mengembalikan hasil set