LXI. 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 :

  • ORACLE_HOME

  • ORACLE_SID

  • LD_PRELOAD

  • LD_LIBRARY_PATH

  • NLS_LANG

  • ORA_NLS33

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 :

# ldd /www/apache/bin/httpd
    libpthread.so.0 => /lib/libpthread.so.0 (0x4001c000)
    libm.so.6 => /lib/libm.so.6 (0x4002f000)
    libcrypt.so.1 => /lib/libcrypt.so.1 (0x4004c000)
    libdl.so.2 => /lib/libdl.so.2 (0x4007a000)
    libc.so.6 => /lib/libc.so.6 (0x4007e000)
    /lib/ld-linux.so.2 => /lib/ld-linux.so.2 (0x40000000)

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

# cd /usr/src/apache_1.3.xx
# make clean
# LIBS=-lpthread ./config.status
# make
# make install

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