value ora_fetch_list: ?max_rows:option int -> cursor ->
                         (option cursor * list (array ora_value)) = 
fun ?(max_rows = None) cur ->
    let rec fetch = fun cur recs n -> 
        match max_rows with
        [ Some n -> (Some cur, (List.rev recs))
        | None   -> try 
                        let r = occi_fetch cur in fetch cur [r :: recs] (n+1)
                    with
                        [End_of_file -> (None, (List.rev recs))]
        ]
    in 
        fetch cur [] 0