Ver Mensaje Individual
  #8  
Antiguo 12-05-2008
Avatar de lucasarts_18
lucasarts_18 lucasarts_18 is offline
Miembro
 
Registrado: mar 2005
Ubicación: Villa Alemana,Chile
Posts: 1.087
Reputación: 21
lucasarts_18 Va por buen camino
Hola de nuevo, jeje

Bueno, después de tamto tiempo de hacer algunas pruebas, leer bastante sobre el tema, estoy utilizando todos los objetos de oracle a la perfección desde php.

Solo una acotación, el código de hector es de php 4, php 5 cambio el nombre de algunas funciones.

Mi duda era como gatillar SP Oracle desde ADOdb. aquí dejo el código de cómo llevar a cabo esta tarea.

Código PHP:
function listarClientes(){
// para gatillarlo desde las librerías ADOdb
    
global $db;

    
$prazonsocial 'serv';
    
$db->AutoCommit FALSE;
    
$db->SetFetchMode(ADODB_FETCH_ASSOC);
    
$stmt $db->PrepareSP("BEGIN adm_clientes.Lista(:prazonsocial,:plista); END;");
    
$db->InParameter($stmt$prazonsocial'prazonsocial');
    
$db->OutParameter($stmt$cur'plista', -1OCI_B_CURSOR);

    
$result $db->Execute($stmt);

    if (!
$result) {
        die(
'Error');
    }

    while(
$row $result->FetchRow())
      
$clientes[] = $row;

    return 
$clientes;


Código PHP:
function listarClientes(){
    
//para gatillarlos desde OCI
    
$conn oci_connect("logisticpoint""logisticpoint""pchome");
    
$cursor oci_new_cursor($conn);

    
$sql "BEGIN adm_clientes.Lista(:prazonsocial,:plista); END;";
    
$stmt oci_parse($conn$sql);

    
oci_bind_by_name($stmt"prazonsocial"$prazonsocial);
    
oci_bind_by_name($stmt"plista"$cursor, -1OCI_B_CURSOR);
    
oci_execute($stmt);
    
oci_execute($cursor);
    
//oci_fetch_assoc($cursor);

    
while ($row oci_fetch_assoc($cursor))
        
$clientes[] = $row;

    return 
$clientes;

Ahora, otro tema que estuve peliando bastante ya que no encontré información satisfactoria sobre como gatillar SP cuando uno de sus parámetros es de tipo %rowtype, pero acá traigo la solución para que no se quebren la cabeza porque yo ya lo hice...jeje

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);


Esperando que a mas de uno que este trabajando en oracle le pueda servir, como conclusión me he quedado con las instrucciones nativas de php y desatarme de las librerías ADOdb, ya que me parecen que son mucho mas versatil las conexiones nativas OCI....y por asunto de velocidad también...

Gracias a todos por este hilo, hasta el próximo capítulo....

Saludos .-
__________________
No todo es como parece ser...
Responder Con Cita