Foros del Web » Programando para Internet » PHP »

parametro oracle rowtype y llamarlo desde php, ¿cómo?

Estas en el tema de parametro oracle rowtype y llamarlo desde php, ¿cómo? en el foro de PHP en Foros del Web. Hola a todos: tengo el siguiente SP Oracle Código PHP: CREATE  OR  REPLACE PROCEDURE update_emp  ( emp_rec employee % ROWTYPE )  IS   2  BEGIN   3       UPDATE employee   4       SET    start_date  =  emp_rec . ...
  #1 (permalink)  
Antiguo 06/05/2008, 22:10
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 3 meses
Puntos: 5
parametro oracle rowtype y llamarlo desde php, ¿cómo?

Hola a todos:

tengo el siguiente SP Oracle

Código PHP:
CREATE OR REPLACE PROCEDURE update_emp (emp_rec employee%ROWTYPEIS
  2  BEGIN
  3       UPDATE employee
  4       SET    start_date 
emp_rec.start_date 100
  5       WHERE id 
emp_rec.id;
  
6  END update_emp
y desde oracle se llama de esta forma

Código PHP:
SQL>
SQL>
SQL> DECLARE
  
2       a employee%ROWTYPE;
  
3  BEGIN
  4       a
.id := '01';
  
5       update_emp(a);
  
6  END;
  
7  
Cómo le especifico desde php que es un rowtype, he intentado con oci_bind_array_by_name y con oci_new_collection, sin tener ningún tipo de exito, google ya no me da ninguna respuesta satisfactoria.

Agradecido si alguien conoce la forma de gatillar este SP desde PHP.

Muchas gracias.
  #2 (permalink)  
Antiguo 07/05/2008, 09:05
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 3 meses
Puntos: 5
Re: parametro oracle rowtype y llamarlo desde php, ¿cómo?

Alguna idea compañeros ?

No quiero pensar en poner 20 parametro in ya que con la forma del rowtype se optimiza todo esto, pero no encuentro la forma de indicarle desde php un arreglo que lo reconozca PL/SQL.

Desde ya, muchas gracias.
  #3 (permalink)  
Antiguo 07/05/2008, 10:01
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: parametro oracle rowtype y llamarlo desde php, ¿cómo?

Hola lucasarts_18,

Haz probado lanzar la consulta usando oci_parse / oci_execute?

Saludos.
  #4 (permalink)  
Antiguo 07/05/2008, 10:44
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 3 meses
Puntos: 5
Re: parametro oracle rowtype y llamarlo desde php, ¿cómo?

Hola GatorV:

Si lo he hecho, usando ADOdb y las librerías OCI que implementa el propio PHP, sin llegar a ningún resultado satisfactorio, al parecer OCI no soporta el tipo %rowtype,
según este link
, pero no sé hasta que punto será también válido para PHP. Seguiré investigando, pero de todas maneras sería penoso, ya que tendría que colocar todas las columnas para poder usar el SP desde PHP.

Hasta Luego .-
  #5 (permalink)  
Antiguo 12/05/2008, 11:22
 
Fecha de Ingreso: enero-2007
Mensajes: 272
Antigüedad: 17 años, 3 meses
Puntos: 5
De acuerdo Re: parametro oracle rowtype y llamarlo desde php, ¿cómo?

Hola GatorV:

Despues de probar y probar y probar...., logré dar con la solución, esos tipos de parámetros Oracle se ejecutan de la siguiente forma desde php.

Código PHP:
function registrarse(){

    
$conn oci_connect('logisticpoint''logisticpoint''pchome') or die;

    
$param1 "Prueba";
    
$param2 "15/07/2008";
    
$param3 55;

    
$sql "declare pdatos prueba%rowtype;".
      
"begin pdatos.columna1 := :param1;".
      
"pdatos.columna2 := :param2;".
      
"pdatos.columna3 := :param3;".
      
"adm_clientes.registrar(pdatos => pdatos);end;";

   
$sth oci_parse($conn$sql);

   
oci_bind_by_name($sth":param1"$param110);
   
oci_bind_by_name($sth":param2"$param210);
   
oci_bind_by_name($sth":param3"$param310);
   
oci_execute($sth);


Eso sería un ejemplo completo....espero que a alguien le sirva

Hasta Luego .-
  #6 (permalink)  
Antiguo 12/05/2008, 12:09
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 11 meses
Puntos: 2135
Re: parametro oracle rowtype y llamarlo desde php, ¿cómo?

Gracias por tu aporte lucasarts_18.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:58.