value decode_occi_type = fun
    [ 1   -> "VARCHAR2"                      (* (ORANET TYPE) character string *)
    | 2   -> "NUMBER"                          (* (ORANET TYPE) oracle numeric *)
    | 3   -> "INTEGER"                                (* (ORANET TYPE) integer *)
    | 4   -> "FLOAT"                    (* (ORANET TYPE) Floating point number *)
    | 5   -> "STRING"                                (* zero terminated string *)
    | 6   -> "VARNUM"                        (* NUM with preceding length byte *)
    | 8   -> "LONG"                                                    (* long *)
    | 9   -> "VARCHAR"                            (* Variable character string *)
    | 10  -> "SQLT_NON"                     (* Null/empty PCC Descriptor entry *)
    | 11  -> "ROWID"                                                  (* rowid *)
    | 12  -> "DATE"                                   (* date in oracle format *)
    | 15  -> "VARRAW"                                  (* binary in VCS format *)
    | 23  -> "RAW"                                      (* binary data(DTYBIN) *)
    | 24  -> "LONG RAW"                                         (* long binary *)
    | 94  -> "LONG VARCHAR"                             (* Longer longs (char) *)
    | 95  -> "LONG VARRAW"                               (* Longer long binary *)
    | 96  -> "CHAR"                                         (* Ansi fixed char *)
    | 104 -> "CHARZ"                                       (* rowid descriptor *)
    | 108 -> "NAMED DATA TYPE"                            (* named object type *)
    | 110 -> "REF"                                                 (* ref type *)
    | 112 -> "CLOB"                                           (* character lob *)
    | 113 -> "BLOB"                                              (* binary lob *)
    | 114 -> "BFILE"                                        (* binary file lob *)
    | 115 -> "CFILE"                                     (* character file lob *)
    | 187 -> "TIMESTAMP"                                          (* TIMESTAMP *)
    | 188 -> "TIMESTAMP WITH TIME ZONE"            (* TIMESTAMP WITH TIME ZONE *)
    | 189 -> "INTERVAL YEAR TO MONTH"                (* INTERVAL YEAR TO MONTH *)
    | 190 -> "INTERVAL DAY TO SECOND"                (* INTERVAL DAY TO SECOND *)
    | 232 -> "TIMESTAMP WITH LOCAL TIME ZONE"       (* TIMESTAMP WITH LOCAL TZ *)
    | n   -> raise (Failure (Printf.sprintf "Unsupported field type %d" n))
]