Ver Mensaje Individual
  #4  
Antiguo 19-04-2008
Avatar de Héctor Randolph
[Héctor Randolph] Héctor Randolph is offline
Miembro Premium
 
Registrado: dic 2004
Posts: 882
Reputación: 20
Héctor Randolph Va por buen camino
Hola lucasarts_18

Te dejo un ejemplo de cómo manejo los cursores en oracle desde PHP

Código PHP:

        $conexion
=@OCILogon("db_username","db_password","db_name");
        
$err=OciError();
        if (
$err){
                
Mensaje('Error en la comunicación con la base de datos','<p>'.$err['message'].'</p>','','',0);    
                 exit();
        }

        
$query='BEGIN PKG_MIPAQUETE.MIPROCEDIMIENTO(:param1,:cursor_salida);END;';
        
$proc OCIParse($conexion$query);

                
//Enviamos los parámetros al procedimiento ligando las variables de php
        
$var_param1 'valor_para_el_parametro1';
        
OCIBindByName($proc':param1',&$var_param1,256);
                
//Ahora ligamos el resultado a un cursor
        
$cursor=OCINewCursor($conexion);
        
OCIBindByName($proc,':cursor_salida',&$cursor,-1,OCI_B_CURSOR);

        
OCIExecute($procOCI_DEFAULT);//Se ejecuta primero la sentencia del query
        
OCIExecute($cursorOCI_DEFAULT);//se ejecuta posteriormente el cursor para poder hacer el fetch
                //Ahora recorremos el cursor para recuperar los valores
        
while (OCIFetchInto($cursor,&$data )) {
            echo 
'campo1 del cursor: '.$data[0].'<br>';
            echo 
'campo2 del cursor: '.$data[1].'<br>';
            echo 
'campo3 del cursor: '.$data['nombre_del_campo'].'<br>';//Es una arreglo asociativo se puede usar el nombre del campo
        
}
        
OCIFreeStatement($proc);
        
OCIFreeCursor($cursor);
        
OCILogoff($conexion); 
Saludos

Última edición por Héctor Randolph fecha: 19-04-2008 a las 18:50:05.
Responder Con Cita