 |
CIV. Funzioni Oracle 8
Queste funzioni permettono di accedere ai database Oracle9, Oracle8 e Oracle7.
Usano la Oracle Call Interface (OCI).
Questa estensione è più flessibile della estensione
precedente
di Oracle. Supporta il binding di variabili PHP locali e globali
ai segnaposto Oracle, ha pieno supporto di LOB, FILE e ROWID
e permette di utilizzare variabili di definizione personalizzabili.
Si raccomanda di utilizzare questa estensione al posto della
vecchia estensione quando
possibile;
Occorre avere installate le librerie client di Oracle per utilizzare questa estensione.
Gli utenti Windows necessitano almeno della versione 8.1 di Oracle per utilizzare
la dll php_oci8.dll.
Prima di usare questa estensione, occorre sincerarsi di aver impostato
le variabili d'ambiente per l'utente Oracle, come pure
per l'utente del server web. Le variabili che potrebbero necessitare l'impostazione sono
le seguenti:
ORACLE_HOME
ORACLE_SID
LD_PRELOAD
LD_LIBRARY_PATH
NLS_LANG
ORA_NLS33
Dopo aver impostato le variabili d'ambiente per l'utente del server web,
occorre sicerarsi di aver aggiunto anche l'utente stesso (nobody, www) al gruppo
oracle.
Se il server web non parte o va in blocco:
Controllare che apache sia linkato con la libreria pthread:
Se la libpthread non compare nell'elenco, occorre reinstallare Apache:
Si noti che su alcuni sistemi, come ad esempio UnixWare, la libreria si chiama libthread
invece di libpthread. PHP e Apache devono essere configurati
con EXTRA_LIBS=-lthread.
Si deve compilare PHP con l'opzione
--with-oci8[=DIR], dove DIR è di default
il contenuto della variabile di ambiente ORACLE_HOME.
Questa estensione non definisce
alcuna direttiva di configurazione in php.ini
Queste costanti sono definite da questa estensione e
sono disponibili solo se l'estensione è stata compilata
nel PHP o se è stata caricata dinamicamente a runtime.
- OCI_DEFAULT
(integer)
Modalità di esecuzione dello statement. Non viene eseguito il commit
automatico utilizzando questa modalità.
- OCI_DESCRIBE_ONLY
(integer)
Modalità di esecuzione dello statement. Utilizzare questa modalità se non si vuole
eseguire la query, ma solamente ricevere la descrizione della select list.
- OCI_COMMIT_ON_SUCCESS
(integer)
Modalità di esecuzione dello statement. Vene eseguito automaticamente il commit dello
statement dopo la chiamata della oci_execute().
- OCI_EXACT_FETCH
(integer)
Modalità di recupero dati dello statement. Utilizzato quando l'applicazione conosce
in anticipo quante righe verranno recuperate.
Questa modalità disattiva il prefetching negli Oracle release 8
o successivi. Il cursore viene eliminato dopo che le
sono state caricate e ciò può determinare un utilizzo ridotto delle
risorse del server.
- OCI_SYSDATE
(integer)
- OCI_B_BFILE
(integer)
Utilizzato con oci_bind_by_name() quando si
collegano i BFILE.
- OCI_B_CFILEE
(integer)
Utilizzato con oci_bind_by_name() quando si
collegano i CFILE.
- OCI_B_CLOB
(integer)
Utilizzato con oci_bind_by_name() quando si
collegano i CLOB.
- OCI_B_BLOB
(integer)
Utilizzato con oci_bind_by_name() quando si
collegano i BLOB.
- OCI_B_ROWID
(integer)
Utilizzato con oci_bind_by_name() quando si
collegano i ROWID.
- OCI_B_CURSOR
(integer)
Utilizzato con oci_bind_by_name() quando si
collegano i cursori, precedentemente allocati con oci_new_descriptor().
- OCI_B_NTY
(integer)
Utilizzato con oci_bind_by_name() quando si
collegano i named data type.
- OCI_B_BIN
(integer)
- SQLT_BFILEE
(integer)
Alias di OCI_B_BFILE.
- SQLT_CFILEE
(integer)
Alias di OCI_B_CFILEE.
- SQLT_CLOB
(integer)
Alias di OCI_B_CLOB.
- SQLT_BLOB
(integer)
Alias di OCI_B_BLOB.
- SQLT_RDD
(integer)
Alias di OCI_B_ROWID.
- SQLT_NTY
(integer)
Alias di OCI_B_NTY.
- OCI_FETCHSTATEMENT_BY_COLUMN
(integer)
Modalità di default di oci_fetch_all().
- OCI_FETCHSTATEMENT_BY_ROW
(integer)
Modalità alternativa di oci_fetch_all().
- OCI_ASSOC
(integer)
Utilizzato con oci_fetch_all() e
oci_fetch_array() per ottenere un array associative
come risultato.
- OCI_NUM
(integer)
Utilizzato con oci_fetch_all() e
oci_fetch_array() per ottenere un array enumerativo
come risultato.
- OCI_BOTH
(integer)
Utilizzato con oci_fetch_all() e
oci_fetch_array() per ottenere un array con indici
sia associativi che numerici.
- OCI_RETURN_NULLS
(integer)
Utilizzato con oci_fetch_array() per ottenere
elementi dell'array vuoti se il valore del campo è NULL.
- OCI_RETURN_LOBS
(integer)
Utilizzato con oci_fetch_array() per ottenere
il valore del LOB invece del suo descrittore.
- OCI_DTYPE_FILE
(integer)
Questo flag ordina a oci_new_descriptor() di
inizializzare un nuovo descrittore di FILE.
- OCI_DTYPE_LOB
(integer)
Questo flag ordina a oci_new_descriptor() di
inizializzare un nuovo descrittore di LOB.
- OCI_DTYPE_ROWID
(integer)
Questo flag ordina a oci_new_descriptor() di
inizializzare un nuovo descrittore di ROWID.
- OCI_D_FILE
(integer)
Alias di OCI_DTYPE_FILE.
- OCI_D_LOB
(integer)
Alias di OCI_DTYPE_LOB.
- OCI_D_ROWID
(integer)
Alias di OCI_DTYPE_ROWID.
Esempio 1. Trucchi OCI
<?php // by sergo at bacup dot ru
// Usare l'opzione OCI_DEFAULT nel comando execute per ritardare l'esicuzione OCIExecute($stmt, OCI_DEFAULT);
// per ricevere i dati utilizzare (dopo il fetch):
$result = OCIResult($stmt, $n); if (is_object($result)) $result = $result->load();
// come comandi INSERT o UPDATE usare:
$sql = "insert into table (field1, field2) values (field1 = 'value', field2 = empty_clob()) returning field2 into :field2"; OCIParse($conn, $sql); $clob = OCINewDescriptor($conn, OCI_D_LOB); OCIBindByName($stmt, ":field2", &$clob, -1, OCI_B_CLOB); OCIExecute($stmt, OCI_DEFAULT); $clob->save("some text"); OCICommit($conn);
?>
|
|
You can easily access stored procedures in the same way as you
would from the commands line.
Esempio 2. Using Stored Procedures
<?php // by webmaster at remoterealty dot com $sth = OCIParse($dbh, "begin sp_newaddress( :address_id, '$firstname', '$lastname', '$company', '$address1', '$address2', '$city', '$state', '$postalcode', '$country', :error_code );end;");
// Questo codice richiama la stored procedure sp_newaddress, dove :address_id è // una variabile in/out e :error_code è una variabile out. // Quindi si effettua il binding:
OCIBindByName($sth, ":address_id", $addr_id, 10); OCIBindByName($sth, ":error_code", $errorcode, 10); OCIExecute($sth);
?>
|
|
|  |