Description
resource
oci_new_connect ( string username, string password [, string db [, string charset [, int session_mode]]] )
oci_new_connect() établit une nouvelle connexion sur un serveur
Oracle et s'y identifie. Contrairement aux fonctions oci_connect() et
oci_pconnect(), oci_new_connect()
ne met pas en cache les connexions et retourne toujours un gestionnaire de connexion
nouvellement ouvert. Ceci est très utile si votre application a besoin d'une isolation
transactionnelle entre deux jeux de requêtes.
Le troisième paramètre, optionnel, db peut contenir l'instance
locale d'Oracle ou un nom disponible dans le fichier
tnsnames.ora. Si le troisième paramètre
n'est pas fourni, PHP va chercher la valeur dans les variables
d'environnement ORACLE_SID et
TWO_TASK pour déterminer le nom de l'instance
locale d'Oracle, et la localisation du fichier
tnsnames.ora.
Le paramètre session_mode est disponible depuis la version 1.1
et accepte les valeurs suivantes : OCI_DEFAULT,
OCI_SYSOPER et OCI_SYSDBA.
Si OCI_SYSOPER ou
OCI_SYSDBA est spécifié,
oci_new_connect() tentera d'établir une connexion privilégiée
en utilisant les crédances externes. Les connexions privilégiées sont désactivées par défaut.
Pour les activer, vous devez définir oci8.privileged_connect
à On.
Note :
Si vous utilisez PHP avec le client Instant d'Oracle, vous pouvez utiliser
les méthodes de nommage facilitant la connexion décrites ici :
http://download-west.oracle.com/docs/cd/B12037_01/network.101/b10775/naming.htm#i498306.
Basiquement, cela signifie que vous pouvez spécifier "//db_host[:port]/database_name"
en tant que nom de base de données. Mais si vous voulez utiliser l'ancienne façon de nommage,
vous devez définir soit ORACLE_HOME, soit
TNS_ADMIN.
Si vous utilisez un serveur Oracle version 9.2 et suivant,
vous pouvez renseigner le paramètre charset,
qui peut être utilisé dans la nouvelle connexion.
Si vous utilisez un serveur Oracle inférieur à la version 9.2, ce paramètre sera ignoré
et la variable d'environnement NLS_LANG sera utilisé Ã la place.
Voici comment séparer des transactions.
Exemple 1. Exemple avec oci_new_connect()
<?php echo '<html><pre>'; $db = '';
$c1 = oci_connect("scott", "tiger", $db); $c2 = oci_new_connect("scott", "tiger", $db);
function create_table($conn) { $stmt = oci_parse($conn, "create table scott.hallo (test varchar2(64))"); oci_execute($stmt); echo $conn . " created table\n\n"; }
function drop_table($conn) { $stmt = oci_parse($conn, "drop table scott.hallo"); oci_execute($stmt); echo $conn . " dropped table\n\n"; }
function insert_data($conn) { $stmt = oci_parse($conn, "insert into scott.hallo values('$conn' || ' ' || to_char(sysdate,'DD-MON-YY HH24:MI:SS'))"); oci_execute($stmt, OCI_DEFAULT); echo $conn . " inserted hallo\n\n"; }
function delete_data($conn) { $stmt = oci_parse($conn, "delete from scott.hallo"); oci_execute($stmt, OCI_DEFAULT); echo $conn . " deleted hallo\n\n"; }
function commit($conn) { oci_commit($conn); echo $conn . " committed\n\n"; }
function rollback($conn) { oci_rollback($conn); echo $conn . " rollback\n\n"; }
function select_data($conn) { $stmt = oci_parse($conn, "select * from scott.hallo"); oci_execute($stmt, OCI_DEFAULT); echo $conn . "----selecting\n\n"; while (oci_fetch($stmt)) { echo $conn . " <" . oci_result($stmt, "TEST") . ">\n\n"; } echo $conn . "----done\n\n"; }
create_table($c1); insert_data($c1);
select_data($c1); select_data($c2);
rollback($c1);
select_data($c1); select_data($c2);
insert_data($c2); commit($c2);
select_data($c1);
delete_data($c1); select_data($c1); select_data($c2); commit($c1);
select_data($c1); select_data($c2);
drop_table($c1); echo '</pre></html>'; ?>
|
|
oci_new_connect() retourne FALSE en cas d'erreur.
Note :
Dans les versions de PHP antérieures à la version 5.0.0,
vous devez utiliser la fonction ocinlogon().
Cet ancien nom est toujours utilisable : un alias a été fait vers
la fonction oci_new_connect(), pour assurer
la compatibilité ascendante. Toutefois, il est recommandé de ne
plus l'utiliser.
Voir aussi
oci_connect() et
oci_pconnect().