<?php
$c1 = oci_connect("hr", "welcome", 'localhost/XE');
$c2 = oci_connect("hr", "welcome", 'localhost/XE');
// Tanto $c1 quanto $c2 mostram o mesmo ID de recurso PHP, o que significa que eles usam a
// mesma conexão de banco de dados subjacente
echo "c1 é $c1<br>\n";
echo "c2 é $c2<br>\n";
function create_table($conn)
{
$stmt = oci_parse($conn, "create table hallo (test varchar2(64))");
oci_execute($stmt);
echo "Tabela criada<br>\n";
}
function drop_table($conn)
{
$stmt = oci_parse($conn, "drop table hallo");
oci_execute($stmt);
echo "Tabela excluída<br>\n";
}
function insert_data($connname, $conn)
{
$stmt = oci_parse($conn, "insert into hallo
values(to_char(sysdate,'DD-MON-YY HH24:MI:SS'))");
oci_execute($stmt, OCI_DEFAULT);
echo "$connname inserida linha sem confirmação<br>\n";
}
function rollback($connname, $conn)
{
oci_rollback($conn);
echo "$connname revertendo<br>\n";
}
function select_data($connname, $conn)
{
$stmt = oci_parse($conn, "select * from hallo");
oci_execute($stmt, OCI_DEFAULT);
echo "$connname ----selecionando<br>\n";
while (oci_fetch($stmt)) {
echo " " . oci_result($stmt, "TEST") . "<br>\n";
}
echo "$connname ----feito<br>\n";
}
create_table($c1);
insert_data('c1', $c1); // Insere uma linha usando c1
sleep(2); // Espera para mostrar um horário diferente para a 2ª linha
insert_data('c2', $c2); // Insere uma linha usando c2
select_data('c1', $c1); // Os resultados de ambas as inserções são retornados
select_data('c2', $c2); // Os resultados de ambas as inserções são retornados
rollback('c1', $c1); // Reverte usando c1
select_data('c1', $c1); // Ambas as inserções foram revertidas
select_data('c2', $c2);
drop_table($c1);
// Fechar uma das conexões torna a variável PHP inutilizável, mas
// a outra pode ser usada
oci_close($c1);
echo "c1 é $c1<br>\n";
echo "c2 é $c2<br>\n";
// O resultado é:
// c1 é Resource id #5
// c2 é Resource id #5
// Tabela criada
// c1 inseriu linha sem confirmar
// c2 inseriu linha sem confirmar
// c1 ----selecionando
// 09-DEC-09 12:14:43
// 09-DEC-09 12:14:45
// c1 ----feito
// c2 ----selecionando
// 09-DEC-09 12:14:43
// 09-DEC-09 12:14:45
// c2 ----feito
// c1 revertendo
// c1 ----selecionando
// c1 ----feito
// c2 ----selecionando
// c2 ----feito
// Tabela excluída
// c1 é
// c2 é Resource id #5
?>