Oracle
 sql >> Baza danych >  >> RDS >> Oracle

Wywołaj procedurę składowaną Oracle z PHP

Aby pracować z kursorem w PHP wymagane są trzy dodatkowe kroki, w porównaniu do dostępu do wierszy bezpośrednio z SELECT oświadczenie.

  • Pierwszym krokiem jest przygotowanie zasobu kursora w PHP za pomocą oci_new_cursor() funkcji, której następnie używasz do powiązania z odpowiednim parametrem.
  • Drugim krokiem jest dodanie parametru do oci_bind_by_name() funkcja
  • Trzecim krokiem, po wykonaniu zwykłej instrukcji SQL, jest wywołanie funkcji oci_execute() w zasobie kursora.

Kod:

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

Nie jestem zbyt biegły w Oracle (i angielskim), więc powinieneś przeczytać ten samouczek . Oto interesujący przykład, spójrz na Procedury składowane i kursory referencyjne rozdział!

Mam nadzieję, że to pomoże!




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tabela lub widok Oracle DB nie istnieje

  2. Oracle SQL porównuje rekordy w tabeli

  3. Odwracanie ciągu znaków w SQL i PL/SQL Przykład

  4. Klaster SQL Server z perspektywy Oracle RAC

  5. Połączenie Pythona 2.7 z Oracle:gubienie (polskich) znaków