value ora_fetch_foreach_list: 
    ?max_rows:option int -> cursor -> (list (array ora_value) -> bool) -> unit =
fun ?(max_rows = None) cur f -> 
    let rec fetch = fun cur recs n ->
        match max_rows with
        [ Some n -> if (f (List.rev recs)) then (fetch cur [] 0) else ()
        | None   -> try 
                        let r = occi_fetch cur in fetch cur [r :: recs] (n+1)
                    with
                        [End_of_file -> ignore (f (List.rev recs))]
        ]
    in 
        fetch cur [] 0