Compartilho com todos a classe criada por mim para utilização com oracle, todos estão livres para utilizar, copiar e modificar, mas por favor, peço que mantenahm os créditos, pois dediquei um bom de pesquisa nisso!
final class oracle
{
/*
* Classe para conexão e queries a banco oracle
* Criado em 02/10/2011 por Felipe Braz
* Versão 1.1
* Duvidas sugestões: fbraz3 [arroba] gmail.com
* Copia/modificação livre desde que se mantenham os créditos
*/
public $oci_error;
private $conexao = null;
private $username = null;
private $password = null;
private $uri = null;
public function get_instance($username, $password, $uri)
{
$this->username = $username;
$this->password = $password;
$this->uri = $uri;
return $this;
}
public function __construct()
{
//Sem construtor
}
public function connect()
{
if (!$this->conexao = @oci_connect($this->username, $this->password, $this->uri)) {
$this->oci_error = @oci_error($this->conexao);
die("Erro ao conectar ao Oracle " . $this->oci_error['text']);
}
}
public function query($sql)
{
$stmt = @oci_parse($this->conexao, $sql);
$r = @oci_execute($stmt);
$this->oci_error = oci_error($stmt);
return $r;
}
}
Exemplos de uso:
Instanciar conexão ao banco com os seguintes dados:
Banco de dados: testeoracle
Senha: s3nh40r4cl3
URL de conexao: 10.1.1.1/oracle
$obj = new oracle;
$obj->get_instance('testeoracle','s3nh40r4cl3','10.1.1.1/oracle')->connect();
Uma vez conectado pode-se efetuar uma query livre usando o método query()
$res = $obj->query("SELECT * FROM USUARIOS");
var_dump($res);
Para obter todos os dados da tabela, pode-se usar a função do php oci_fetch_array()
$res = $obj->query("SELECT * FROM USUARIOS");
while($r = oci_fetch_array($res))
{
echo $r['usuario']."n";
}
Os erros retornados ficam no atributo publico oci_error.
Exemplo de tratamento de erro:
//conexão
$obj = new oracle;
$obj->get_instance('testeoracle','s3nh40r4cl3','10.1.1.1/oracle')->connect();
//Consulta na tabela USUARIOS
$res = $obj->query("SELECT * FROM USUARIOS");
//Se retornou erro, debuga ele e mata o script
if($obj->oci_error)
{
print_r($obj->oci_error);
die();
}
//Loop para obter todos os dados da tabela
while($r = oci_fetch_array($res))
{
echo $r['usuario']."n";
}
COmo podem ver, a classe é bem simples, porém extremamente funcional para uso com oracle.