Описание
resource
oci_new_connect ( string username, string password [, string db [, string charset]] )
oci_new_connect() создает новое соединение
с сервером Oracle. Необязательный третий параметр может содержать имя
локального экземпляра Oracle или имя сервера, указанного в tnsnames.ora.
Если параметр db не указан, PHP будет использовать
переменные ORACLE_SID и TWO_TASK
для определения имени локального экземпляра Oracle и местонахождения
файла tnsnames.ora соответственно.
Если вы используете сервер Oracle версии 9.2 и выше, то вы можете указать
кодировку, которая будет использована в новом соединении. Кодировка
указывается в параметре charset. Если же вы
используете версии сервера Oracle младше 9.2, то этот параметр будет
проигнорирован, а вместо него будет использована переменная окружения
NLS_LANG.
oci_new_connect() принудительно создает новое
соединение. Это может быть использовано в том случае, если вы хотите
изолировать набор транзакций. По умолчанию, новое соединение не создается
в том случае, если соединение с такими параметрами уже было создано,
поэтому oci_connect() и oci_pconnect()
вернут идентификатор уже существующего соединения. Но
oci_new_connect(), в отличие от них, всегда создает
новое соединение.
Этот пример демонстрирует разделение соединений.
Пример 1. Пример использования ocinlogon()
<?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() возвращает FALSE.
Замечание:
В версиях PHP ниже 5.0.0 эта функция называлась ocinlogon().
В PHP 5.0.0 и выше ocinlogon() является
алиасом oci_new_connect(), поэтому вы можете
продолжать использовать это имя, однако это не рекомендуется.
См. также oci_connect() и
oci_pconnect().