Page
Library
Module
Module type
Parameter
Class
Class type
Source
Fun_sql.Sql
SourceThe database connection or file, etc.
A value sent to the database in the place of a query parameter.
A decoder of a single row of the resultset from running a query.
A generic way to write placeholders for different database drivers' prepared statement parameters.
ℹ️ Placeholders are 0-indexed.
The main function through which queries are run is the query
function. This function always creates a prepared statement for each partial call to query db sql
. This prepared statement can then be called with the actual arguments (if any) and the resultset row decoder:
let add_person =
query db (sql "insert into people (name, age) values (%a, %a)" placeholder 0 placeholder 1)
let add_person name age = add_person ~args:Arg.[text name; int age] unit
exec_script db sql
executes the sql
script (possibly made up of multiple statements) in the database db
. Note that it ignores any rows returned by any of the statements.
The script must not have a trailing semicolon.
These encode OCaml data as data to be bound to the query statement.
ret decode
is a custom return type encoding for a resultset into a sequence of values of the type decoded by decode
.
decode
constructs a value of the custom type if possible, else raises Failure
.
Note that the sequence rows of the resultset is unfolded as it is read from the database. It can only be traversed once, with e.g. List.of_seq
or Seq.iter
. If traversed multiple times, it will raise Failure
.
Also handles values of all other types. Use this when SQLite can change the exact type of value it returns at runtime, e.g. for very large numbers it can return text.