Just re-read the Jane Street article OCaml as a scripting language†, and added an interactive toplevel to OCI*ML and a first stab at a make install
task, but I still have to do:
$ ocimlsh -I <directory where ociml.cma and .cmi are>
So there must be something wrong in my Makefile 😦 Anyone got any suggestions?
Anyway, consider (qq for “quick query”):
open Ociml open Report let qq sth sqltext = orasql sth sqltext; let r = new report (Array.map orastring (oracols sth)) in begin try while true do let row = Array.map orastring (orafetch sth) in r#add_row row; done; with |Not_found -> (); end; r#print_report ();
Save as qq.ml
then:
$ ../ociml/ocimlsh -I ../ociml/ Objective Caml version 3.12.0 # #use "qq.ml";; # let lda = oralogon "gaius/abc123";; # let sth = oraopen lda;; # qq sth "select * from ociml_test";; CONSTANT_ID DATE_ENTERED CONSTANT_NAME CONST_VALUE ----------- -------------------- ----------------------- ---------------- 1 13-MAY-2011 20:47:09 PI 3.142000 2 01-JAN-1970 01:00:00 e 2.718000 3 13-MAY-2011 20:47:10 Square root 2 1.410000 4 13-MAY-2011 20:47:10 Speed of light 300000000.000000 5 13-MAY-2011 20:47:10 Acceleration of gravity 9.800000 - : unit = () #
I need to make ocimlsh
as straightforward to use as SQL*Plus so that even people who presently mash up sqlplus
and bash
to write “throwaway” scripts will want to adopt it. I think it’s already simpler than Perl and DBI. And Report formats better than SQL*Plus which always gets the column widths wrong…
† Also see Scripting with Types from Galois.
Pingback: OCI*ML: Minor updates | So I decided to take my work back underground
Pingback: OCI*ML: Ref Cursors and Raw Messages | So I decided to take my work back underground
Pingback: Scala Quickstart for Oracle DBAs | So I decided to take my work back underground
Pingback: Quick histograms | So I decided to take my work back underground