PDA

Ver la Versión Completa : Php y Oracle...


Tanix
29-09-2003, 10:56:49
Buenas a tod@s... Mi pregunta es sencilla, a ver si alguien me puede echar una mano que me estoy voviendo loco sin encontrar nada por la red... Alguien sabria decirme como llamar a Funciones y Procedimientos almacenados en Oracle (creados con PL/SQL claro) desde un script de php???... Se me ha ocurrido esto:

$cl=conectar_oracle();

$sentencia=OCIParse($cl,"SELECT MI_FUNCION(...) FROM DUAL");

OCIExecute($sentencia);
...
...//COntrol de errores...
...

OCIFreeStatement($sentencia);
OCILogOff($cl);


Pero no estoy completamente seguro de que funcione corretamente... Bueno espero que alguien se haya encontrado con esto alguna vez y me pueda echar una mano... Gracias de antemano por sus respuestas... Un Saludo... Tanix.

Tanix
01-10-2003, 13:01:13
Bueno pues ya encontre la solucion... :D :D
Pa' quien le interese... Simplemente tenemos que introducir nuestra llamada al procedimiento entre BEGIN END;, me explico con un ejemplo:

//Si se trata de un procedimiento...
$conn=conectar_oracle();

$sentencia=OCIParse($conn,"BEGIN
PACKUNO.EJECUTA(PARAMETROS)
END;");

OCIExecute($sentencia);
...
...//COntrol de errores...
...

OCIFreeStatement($sentencia);
OCILogOff($conn);


Si es una funcion:


$conn=conectar_oracle();

$sentencia = OCIParse($conn,
"BEGIN
:RESULTADO:=PACK_DOS.EJECUTA2(PARAMETROS) );
END;");

/*OCIBindByName=Enlaza una variable PHP a un Placeholder de Oracle*/
OCIBindByName($sentencia, ":RESULTADO", $resultado, 255);

OCIExecute($sentencia);
...
...//COntrol de errores...
...

OCIFreeStatement($sentencia);
OCILogOff($conn);


Espero que le sirva a alguien... Saludos... Tanix.

jachguate
02-10-2003, 01:51:05
Para los procedimientos almacenados también podes utilizar la clausula execute.

Execute NombreProcedure(Parametros);

Por supuesto... esto no funciona para funciones.... :D

Hasta luego.

;)