2017-11-17 13:51 GMT+01:00 Peter Da Silva <peter.dasi...@flightaware.com>:

> Sqlite will perform the substitution of Tcl variables in a query. You can
> flag the variable with a ‘$’ or with a ‘:’ (which makes it more like other
> SQL APIs).
>

​Yes, I found that. The disadvantage is that you have to have a variable
with the correct name, but I do not mind.​


>
> So you can write:
>
>     $db eval {
>             SELECT   Tea
>             FROM     teaInStock
>             ORDER BY LastUsed DESC
>             LIMIT   :nrToFetch;
>     } {
>             ...
>     }
>

​I always want to define my queries in one place. So I have:
    proc getTeaList {{limitNr 5}} {
        global getTeasToDrinkStr

        set teaList []
        db eval ${getTeasToDrinkStr} {


And the definition:
    set getTeasToDrinkStr "
        SELECT *
        FROM (
            SELECT   *
            ,        abs(random()) / CAST(1.4E18 AS INTEGER) AS Randomiser
            FROM     teaInStock
            ORDER BY LastUsed
        )
        ORDER BY randomiser + IFNULL(JULIANDAY(LastUsed), 0) ASC
        LIMIT    :limitNr
    "

-- 
Cecil Westerhof
_______________________________________________
sqlite-users mailing list
sqlite-users@mailinglists.sqlite.org
http://mailinglists.sqlite.org/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to