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))
]