Google

NAME="GENERATOR" CONTENT="Modular DocBook HTML Stylesheet Version 1.73 ">

LXX. 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
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é....