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

Panggil prosedur tersimpan Oracle dari PHP

Untuk bekerja dengan kursor di PHP diperlukan tiga langkah tambahan, dibandingkan dengan mengakses baris langsung dari SELECT pernyataan.

  • Langkah pertama adalah menyiapkan sumber kursor di PHP menggunakan oci_new_cursor() fungsi, yang kemudian Anda gunakan untuk mengikat ke parameter yang sesuai.
  • Langkah kedua adalah menambahkan parameter pada oci_bind_by_name() fungsi
  • Langkah ketiga, setelah Anda mengeksekusi pernyataan SQL biasa, adalah memanggil oci_execute() pada sumber kursor.

Kode:

//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);
}

Saya tidak begitu fasih dengan Oracle (dan bahasa Inggris) jadi Anda harus membaca tutorial ini . Ada contoh menarik, lihat Prosedur Tersimpan dan Kursor Referensi bab!

Semoga membantu!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. pilih nilai kolom dinamis dari variabel tipe baris di pl sql

  2. Mengapa banyak tabel ORACLE default 12c?

  3. PLS-00428:klausa INTO diharapkan dalam pernyataan SELECT ini

  4. Misteri rownum di oracle

  5. peningkatan otomatis oracle dengan urutan dan pemicu tidak berfungsi dengan benar