adamc@231
|
1 table t : {A : int, B : string, C : float}
|
adamc@231
|
2
|
adamc@231
|
3 val q1 = (SELECT * FROM t LIMIT 42)
|
adamc@231
|
4 val q2 = fn n => (SELECT * FROM t LIMIT {n})
|
adamc@232
|
5
|
adamc@232
|
6 val q3 = (SELECT * FROM t OFFSET 3)
|
adamc@232
|
7 val q4 = fn n => fn m => (SELECT * FROM t LIMIT {n} OFFSET {m})
|
adamc@262
|
8
|
adamc@262
|
9
|
adamc@262
|
10 datatype list a = Nil | Cons of a * list a
|
adamc@262
|
11
|
adamc@262
|
12 val r1 : transaction (list {A : int, B : string, C : float}) =
|
adamc@263
|
13 query (q4 3 7)
|
adamc@262
|
14 (fn fs acc => return (Cons (fs.T, acc)))
|
adamc@262
|
15 Nil
|
adamc@262
|
16
|
adamc@262
|
17 val r2 : transaction string =
|
adamc@262
|
18 ls <- r1;
|
adamc@262
|
19 return (case ls of
|
adamc@262
|
20 Nil => "Problem"
|
adamc@262
|
21 | Cons ({B = b, ...}, _) => b)
|
adamc@262
|
22
|
adamc@262
|
23 val main : unit -> transaction page = fn () =>
|
adamc@262
|
24 s <- r2;
|
adamc@262
|
25 return <html><body>
|
adamc@262
|
26 {cdata s}
|
adamc@262
|
27 </body></html>
|