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($proc, OCI_DEFAULT);//Se ejecuta primero la sentencia del query
OCIExecute($cursor, OCI_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