Funcões do Oracle no PHP

168 views
Skip to first unread message

giu...@gmail.com

unread,
Feb 7, 2006, 8:27:51 AM2/7/06
to php-brasil
Buenas!

Estou iniciando um projeto de migracão aonde tenho dois sistemas, um
desenvolvido em PHP acessando uma base Postgres e um em PL/WEB
acessando Oracle.
Atualmente a interacão entre os dois sistemas se da atravéz de
arquivos testos, scripts batch, etc. Nosso plano é unir os dois
sistemas usando o melhor de cada: PHP e Oracle.

Depois de uma certa briga, consegui fazer o PHP acessar o Oracle, fiz
alguns testes, consegui chamar umas procedures, porem me atrapalhei ao
chamar uma funcão...

Meu código esta assim:

$query = "begin pacote.funcaoOracleQualquer('".$parametro."');
end;";

$stmt = OCIParse($conn, $query);

$rs = ociexecute($stmt);

$err = OCIError();

print "<br>Error code = " . $err[code];
print "<br>Error message = " . $err[message];
print "<br>Error position = " . $err[offset];
print "<br>SQL Statement = " . $err[sqltext];

echo "<br><br>".ociresult($rs);

OCILogoff($conn);

O código esta bem "tosco", quando isso funcionar parto para
"perfuma-lo".

E o erro: ... PLS-00221: 'funcaoOracleQualquer' is not a procedure or
is undefined ORA-06550: line 1 ...

Agradeco desde ja pela atencão.


[]'s

Giusepe

Werner Petry Moraes

unread,
Feb 7, 2006, 11:34:18 AM2/7/06
to php-b...@googlegroups.com
Opa,

A conexão está certa?
banco, usuário, sid certo?
consegue fazer algum select?
se é uma função tu pode chamar como SELECT
pacote.funcaoOracleQualquer('".$parametro."') FROM dual, tenta assim

--
Werner Petry Moraes
http://werner.inf.br/
ICQ: 71759171

Giusepe Casagrande

unread,
Feb 7, 2006, 11:41:00 AM2/7/06
to php-b...@googlegroups.com
> Opa,

Opa!
>
> A conexão está certa?
Sim.

> banco, usuário, sid certo?

Sim.
> consegue fazer algum select?

e Sim :-)


> se é uma função tu pode chamar como SELECT
> pacote.funcaoOracleQualquer('".$parametro."') FROM dual, tenta assim
>

Ah legal! ja estou tentando aqui... ainda dando erro mas diferente,
deixa eu tentar mais, mudar algumas coisas e repasso o resultado.

obrigado por enquanto!


--
Giusepe Casagrande

www.jogosdaqui.com.br

Giusepe Casagrande

unread,
Feb 7, 2006, 11:47:56 AM2/7/06
to php-b...@googlegroups.com
Bom, teste... e não deu. Na verdade nem rodando direto no Oracle.

Alias, nem sabia que dava pra fazer isso :-)

Bom, sigo pesquisando e prcurando como fazer.

[]'s


--
Giusepe Casagrande

www.jogosdaqui.com.br

Werner Petry Moraes

unread,
Feb 7, 2006, 11:59:38 AM2/7/06
to php-b...@googlegroups.com
Pode não ser isso.
mas tem certeza que essa tua função não é uma procedure?
função dá pra chamar como select, e esse foi o único jeito que
consegui chamar pelo PHP. Para rodar procedure, já fiz função que
chamava ela e retornava qualquer valor inútil.
Essas coisas no Oracle são complicadas mesmo.

Giusepe Casagrande

unread,
Feb 7, 2006, 12:03:23 PM2/7/06
to php-b...@googlegroups.com
Bom, eu vou dar uma revisada geral.

Se eu etivesse trabalhando sozinho eu assinava e dizia: sim é isso ai!

Mas tem alguem que cuida do oracle e eu do php, logo... nunca se sabe.
Vou revisar a funcao, ver como isso ta e dou um retorno.

Abracos!


--
Giusepe Casagrande

www.jogosdaqui.com.br

Giusepe Casagrande

unread,
Feb 7, 2006, 12:20:31 PM2/7/06
to php-b...@googlegroups.com
Bom, descobri que nao posso executar uma funcao com commit ou rollback
dentro de uma query...

Ao menos foi esse erro que o Oracle me deu ao fazer o comando direto
no sqlplus e PLDEV.

Eu poderia tirar todo o tratamento de dentro da funcao e colocar no
php.. mas ai perde i sentido de ser, pois poderia mover tudo pro PHP
se quisesse.

Buenas, sigo na busca! heheh


--
Giusepe Casagrande

www.jogosdaqui.com.br

Werner Petry Moraes

unread,
Feb 7, 2006, 12:23:51 PM2/7/06
to php-b...@googlegroups.com
Complicou o esquema... hehe

Não sei então, eu pelo menos nunca fiz nada do tipo rodar função sem
ser por query select. na época que eu estava tentando, não achei nada
na net que funcionasse.

Reply all
Reply to author
Forward
0 new messages