LXXI. Oracle 8

Ces fonctions vous permettront d ' accéder aux serveurs Oracle8 et Oracle7 . Elles utilisent l' interface Oracle8 Call-Interface (oci8 ) . Vous aurez donc besoin des librairies clientes Oracle8 pour pouvoir les utiliser .

Il faut noter que cette extension est plus souple que l ' extension Oracle officielle . Elle supporte notamment les liaisons entre les variables globales et locales de PHP avec des emplacements Oracle ; elle supporte complètement les types LOB , FILE et ROWID et vous permet d 'utiliser des variables de définitions personnalisables .

Avant d' utiliser cette extension , assurez-vous que vous avez bien paramétré vos variables d 'environnement Oracle , ainsi que votre démon utilisateur . Les variables dont vous pouvez avoir besoin sont :



Après avoir configuré ces variables pour votre utilisateur " serveur web" , assurez-vous aussi d'ajouter cet utilisateur (nobody , www ) au group Oracle .

Si votre serveur web ne démarre pas , ou crashe au démarrage : Vérifiez que Apache a bien été compilé avec la librairie pthread :



Si la libpthread n ' est pas listée , vous devez réinstaller Apache :



Exemple 1 . Aide oci

 
?php

 
/

 
/

 
par

 
sergo@bacup.ru

 
/

 
/

 
Utilisez

 
l'

 
option

 
:

 
oci_DEFAULT

 
pour

 
éxécuter

 
les

 
commandes

 
avec

 
un

 
délai

 
ociExecute($stmt

 
,

 
oci_DEFAULT)

 
;

 
/

 
/

 
pour

 
lire

 
les

 
données

 
après

 
lecture

 
,

 
utilisez

 
:

 
$result

 
=

 
ociResult($stmt

 
,

 
$n)

 
;

 
if

 
(is_object

 
($result)

 
)

 
$result

 
=

 
$result

 
-

 
load()

 
;

 
/

 
/

 
Pour

 
les

 
commandes

 
INSERT

 
ou

 
UPDATE

 
utilisez

 
:

 
$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

 
("Du

 
texte")

 
;

 
ocicommit($conn)

 
;

 
?





Vous pouvez facilement accéder aux procédures stockées , de la même façon que vous le feriez par ligne de commande :

Exemple 2 . Utilisation de procédures stockées

 
?php

 
/

 
/

 
par

 
webmaster@remoterealty.com

 
$sth

 
=

 
ociparse

 
(

 
$dbh

 
,

 
"begin

 
sp_newaddress

 
(

 
:address_id

 
,

 
'$firstname'

 
,

 
'$lastname'

 
,

 
'$company'

 
,

 
'$address1'

 
,

 
'$address2'

 
,

 
'$city'

 
,

 
'$state'

 
,

 
'$postalcode'

 
,

 
'$country'

 
,

 
:error_code

 
);end

 
;

 
"

 
)

 
;

 
/

 
/

 
Ce

 
script

 
appelle

 
la

 
procédure

 
stockée

 
sp_newaddress

 
,

 
avec

 
address_id

 
qui

 
est

 
/

 
/

 
une

 
variable

 
entrante

 
/

 
sortante

 
et

 
:error_code

 
une

 
variable

 
sortante

 
.

 
/

 
/

 
Lorsque

 
vous

 
les

 
liez

 
:

 
ociBindByName

 
(

 
$sth

 
,

 
":address_id"

 
,

 
$addr_id

 
,

 
10

 
)

 
;

 
ociBindByName

 
(

 
$sth

 
,

 
":error_code"

 
,

 
$errorcode

 
,

 
10

 
)

 
;

 
ociExecute

 
(

 
$sth

 
)

 
;

 
?





Table des matières
ociBindByName -- Utilise une variable PHP pour la phase de définition, dans un SELECT.
OCICancel - - Bientôt documenté... .
OCICollAppend -- Coming soon
OCICollAssign -- Bientôt documenté....
OCICollAssignElem - - Bientôt documenté... .
OCICollGetElem - - Bientôt documenté... .
OCICollMax - - Bientôt documenté... .
OCICollSize - - Bientôt documenté... .
OCICollTrim -- Bientôt documenté....
ociColumnIsNULL -- Teste si la valeur d'une colonne est NULL.
ociColumnName -- Retourne le nom d'une colonne.
OCIColumnPrecision - - Bientôt documenté... .
OCIColumnScale -- Bientôt documenté....
ociColumnSize -- Retourne la taille de la colonne.
ociColumnType -- Retourne le type de données d'une colonne.
OCIColumnTypeRaw -- Bientôt documenté....
ociCommit -- Valide les transactions en cours.
ociDefineByName -- Utilise une variable PHP pour la phase de définition, dans une commande SELECT.
ociError -- Retourne la dernière erreur de stmt|conn|global.
ociexecute -- Exécute une commande.
ociFetch -- Modifie la prochaine ligne dans le résultat.
ociFetchInto -- Retourne la ligne suivante dans un tableau.
ociFetchStatement -- Retourne toutes les lignes d'un résultat.
OCIFreeCollection -- Bientôt documenté....
ociFreeCursor -- Libère toutes les ressources occupées par un pointeur.
ociFreeDesc -- Supprime un descripteur de LOB
ociFreeStatement -- Libère toutes les ressources occupées par une commande.
ociinternaldebug -- Active ou désactive l'affichage des données de debuggage.
OCILoadLob -- Bientôt documenté....
ociLogOff -- Déconnexion d'un serveur Oracle.
ociLogon -- Etablit une connexion à un serveur Oracle.
OCINewCollection -- Bientôt documenté....
ociNewCursor -- Retourne un nouveau pointeur à utiliser pour lier les pointeurs de références
ociNewDescriptor -- Initialise un nouveau pointeur vide de LOB/FILE
ociNLogon -- Se connecte à un serveur Oracle avec une nouvelle connexion.
ociNumCols -- Retourne le nombre de colonnes dans un résultat
ociparse -- Analyse une requête.
ociPLogon -- Connection persistante à un serveur Oracle.
ociResult -- Retourne la valeur d'une colonne
ociRollback -- Annule les transactions en cours.
ociRowCount -- Retourne le nombre de lignes affectées.
OCISaveLob - - Bientôt documenté... .
OCISaveLobFile -- Bientôt documenté....
ociServerVersion -- Retourne une chaîne contenant les informations de version du serveur.
ocisetprefetch -- Indique le nombre de lignes qui doivent être pré-lues
ociStatementType -- Retourne le type de commande OCI.
OCIWriteLobToFile - - Bientôt documenté... .