qualifier and param examples

This commit is contained in:
Justin Kramer 2012-08-24 23:06:24 -04:00
parent e0c190b50e
commit b717070bbc

View file

@ -91,19 +91,20 @@ Queries can be nested:
=> ["SELECT * FROM foo WHERE (foo.a IN (SELECT a FROM bar))"] => ["SELECT * FROM foo WHERE (foo.a IN (SELECT a FROM bar))"]
``` ```
There are helper functions and data literals for handling SQL function There are helper functions and data literals for field qualifiers, SQL function
calls and raw SQL fragments: calls, raw SQL fragments, and named input parameters:
```clj ```clj
(-> (select (sql/call :count :*) (sql/raw "@var := foo.bar")) (-> (select (sql/qualify :foo :a) (sql/call :count :*) (sql/raw "@var := foo.bar"))
(from :foo)) (from :foo)
=> {:from (:foo), :select (#sql/call [:count :*] #sql/raw "@var := foo.bar")} (where [:= :a (sql/param :baz)]))
=> {:where [:= :a #sql/param :baz], :from (:foo), :select (#sql/call [:count :*] #sql/raw "@var := foo.bar")}
(sql/format *1) (sql/format *1 {:baz "BAZ"})
=> ["SELECT COUNT(*), @var := foo.bar FROM foo"] => ["SELECT COUNT(*), @var := foo.bar FROM foo WHERE a = ?" "BAZ"]
``` ```
Here's a big, complicated query. Note that Honey SQL makes no attempt to verify that your queries are valid. Here's a big, complicated query. Note that Honey SQL makes no attempt to verify that your queries make any sense. It merely renders surface syntax.
```clj ```clj
(-> (select :f.* :b.baz :c.quux (sql/call :now) (sql/raw "@x := 10")) (-> (select :f.* :b.baz :c.quux (sql/call :now) (sql/raw "@x := 10"))