Oi Ana,

achei sua pergunta importante porque já tive vários problemas com o
PHP/ORACLE (não gosto dessa mistura), então resolvi fazer um teste (segue o
código abaixo - arquivo único). Levando em consideração que conectei a um
ORACLE XE e a outro 10g remotos (não tenho um 9i aqui), tudo funcionou ok.
Desenvolvi o código na minha máquina local rodando UBUNTU 10g, PHP5 e um
instantclient que baixei outro dia. Modifiquei os parâmetros de conexão e
selects por motivos óbvios. Qualquer dúvida, consulte o manual do PHP no
site www.php.net (boa parte do código copiei de lá). Tente fazer o código
orientado à objetos, fica bem melhor de trabalhar. Boa sorte.

[]'s,
Daniel Falcão

<?php

/*
 * CONFIGURACOES
 */
define("USER", "ovelha");
define("PASS", "novelo");
define("STRING", "10.128.0.21:1521/REBANHO");

define("USER_ALT", "boi");
define("PASS_ALT", "leite");
define("STRING_ALT", "10.128.5.172:1521/MANADA");

define("LOCALE", "utf8");

/*
 * FUNCOES
 */
function conecta($user, $pass, $stringConn, $locale) {
    $conn = oci_connect($user, $pass, $stringConn, $locale);
    if (!$conn) {
        $e = oci_error();
        trigger_error(htmlentities($e['message'], ENT_QUOTES),
E_USER_ERROR);
    }
    return $conn;
}

function executa($conn, $query) {
    $stid = oci_parse($conn, $query);
    $r = oci_execute($stid);
    oci_fetch_all($stid, $res);
    oci_free_statement($stid);
    return $res;
}

/*
 * UTILIZANDO AS FUNCOES:
 */
//conectando e executando no primeiro banco:
$connx = conecta(USER, PASS, STRING, LOCALE);
$resx = executa($connx, "select * from fazenda");
var_dump($resx);

echo "<hr/>";

//conectando e executando no segundo banco:
$conny = conecta(USER_ALT, PASS_ALT, STRING_ALT, LOCALE);
$resy = executa($conny, "select * from outrafazenda");
var_dump($resy);

oci_close($connx);
oci_close($conny);

?>



Em 19 de julho de 2011 09:38, José Laurindo <jlchia...@yahoo.com.br>escreveu:

> **
>
>
> Colega, com certeza o percentual de especialistas em bancos Oracle que
> participam da lista E que também são programadores php não deve ser muito
> alto,imagino : NECESSARIAMENTE tenho que te recomendar uma lista de php...
>
> De qquer forma : até onde eu entendo o php é semelhante à outras linguagem
> aonde vc tem um comando de conexão e aonde vc indica um e apenas um banco a
> conectar a cada vez, então ACHO (é um achismo, NÂO é nada mais que isso), eu
> Acho que as opções são :
>
> a) fora do seu programa, criar no banco de dados 9i um DATABASE LINK, ie,
> uma conexão lógica interna banco-a-banco apontando pro banco 10g : isso te
> permite que o seu programa conecte no banco 9i, use as tabelas normalmente
> do 9i, mas AINDA usando essa conexão 9i, pesquise tabelas do 10g... O lance
> é que :
>
> 1. isso depende de o banco 9i ter acesso via rede ao banco 10g
>
> e
>
> 2. muito certamente vc Não Deve ter privilégios pra criar coisas dentro dos
> bancos, vc tem que pedir pro DBA/administrador
>
> ou
>
> b) no mesmo programa, vc conecta no 9i, busca os dados que precisa, os
> armazena localmente (num arquivo temporário, talvez) , aí conecta no 10g e
> vai lendo linha-a-linha o arq.temporário
>
> ou
>
> c) loop de programação tipo :
>
> loop
> conecta no banco 9i
> lê uma linha e armazena em variáveis de memória
> conecta no banco 10g
> faz a pesquisa necessária especificando os dados que estão em memória
> encerra quando todos os dados do 9i foram lidos
> end loop
>
> ==> nem preciso dizer, programa-exemplo fazendo b) ou c) não tem jeito de
> eu fazer, conheço o mínimo do mínimo, mas até onde sei b) e c) são SIM
> factíveis em php.....
>
> []s
>
> Chiappa
>
>
>
> --- Em oracle_br@yahoogrupos.com.br, "Ana" <doceangell@...> escreveu
>
> >
> > Bom dia pessoal!
> >
> > Tenho 2 bases uma Oracle 9i e outra 10g, preciso urgentemente fazer um
> select no Oracle 9i em um mesmo arquivo php que utiliza o Oracle 10g...
> > É possível?
> >
> > Vou dar um exemplo do que eu fiz... Criei 2 arquivos de conexão .php (um
> para cada banco de dados) nele tem meus ociConctar(), ociDesconectar(), e
> todos funcionam...
> >
> > //exemplo do banco 1 (funciona esse) esse arquivo se chama config.php
> > function ociConectar()
> > {
> > global $ociConn1;
> > $db = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
> > (Host = 200.169.63.2)(Port = 1521)))
> > (CONNECT_DATA = (SID = meusid)))";
> > if(!( $ociConn1 = oci_connect("usuario", "senha", $db) ))
> > return $conectado1 = 0;
> > else
> > return $conectado1 = 1;
> > }
> >
> > //exemplo do banco 2 - esse arquivo se chama config2.php
> > function ociConectar2()
> > {
> > global $ociConn2;
> > $db2 = "(DESCRIPTION = (ADDRESS_LIST = (ADDRESS = (PROTOCOL = TCP)
> > (Host = 200.169.63.4)(Port = 1521)))
> > (CONNECT_DATA = (SID = gep)))";
> > if(!( $ociConn2 = oci_connect("usuario", "senha", $db2) ))
> > return 0;
> > else
> > return 1;
> > }
> >
> > ////////////////
> > Lá no meu arquivo .php eu dou 2 require_once:
> >
> > require_once(config.php);
> > require_once(config2.php);
> >
> > Durante o código existem vários ociExecutar($sql); do banco 1 que
> funcionam! MAS, quando eu dou um ociExecutar2($sql);
> > no meio do código é aí que não funciona...
> >
> > Minha tupla2() vem vazia. E tem dados nesse select, e o user ta certo
> > e eu já conferir e reconferir dezenas de vezes e não entendo o pq da
> minha tupla2() já dei ociDesconectar antes e ociCOnectar2() mas ainda não
> funciona...
> >
> > Eu só corro pra cá quando é importante, alguém pode me ajudar??
> >
>
>  
>



-- 
Atenciosamente,
Daniel Falcão

Analista e Desenvolvedor de Software
http://br.linkedin.com/in/embuar
http://lattes.cnpq.br/2208735579737258
http://embuar.blogspot.com
http://twitter.com/embuar


[As partes desta mensagem que não continham texto foram removidas]



------------------------------------

--------------------------------------------------------------------------------------------------------------------------
>Atenção! As mensagens do grupo ORACLE_BR são de acesso público e de inteira 
>responsabilidade de seus remetentes.
Acesse: http://www.mail-archive.com/oracle_br@yahoogrupos.com.br/ 
--------------------------------------------------------------------------------------------------------------------------
>Apostilas » Dicas e Exemplos » Função » Mundo Oracle » Package » Procedure » 
>Scripts » Tutoriais - O GRUPO ORACLE_BR TEM SEU PROPRIO ESPAÇO! VISITE: 
>http://www.oraclebr.com.br/  
------------------------------------------------------------------------------------------------------------------------
 Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/oracle_br/

<*> Para sair deste grupo, envie um e-mail para:
    oracle_br-unsubscr...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
    http://br.yahoo.com/info/utos.html


Responder a