Manuel PHP
Précédent |  | Suivant

# LXVIII. 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 );
    ?>

Précédent | Sommaire | Suivant
odbc_statistics | Niveau supérieur | ociDefineByName