Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   PHP (https://www.clubdelphi.com/foros/forumdisplay.php?f=15)
-   -   Php y Oracle... (https://www.clubdelphi.com/foros/showthread.php?t=4017)

Tanix 29-09-2003 10:56:49

Php y Oracle... Encontre Solución
 
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:
Cita:

$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:
Código PHP:

//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:

Código PHP:

$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"$resultado255);

  
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.

;)


La franja horaria es GMT +2. Ahora son las 23:42:05.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi