2011-09-07 49 views

回答

1

不,這些方法直接執行它們各自的預處理語句。他們都很基本。對於conj!update-in!,看在conj-rowsupdate-vals功能format電話,你可以找到internal命名空間中:

(format "INSERT INTO %s %s VALUES (%s)" 
     (to-tablename table) columns template) 

(format "UPDATE %s SET %s WHERE %s" 
     (to-tablename table) columns where) 

disj!,ClojureQL使用clojure.java.jdbcdelete-rows功能包含:

(format "DELETE FROM %s WHERE %s" 
      (as-identifier table) where) 

因此,基本上disj!可以使用java.jdbcwith-naming-strategywith-quoted-identifiers宏作爲表名,而t他其他人不。

+0

所以,如果我反映這些功能,我可以做一個to-str版本,這很酷。任何想法如何與普通選擇一樣,因爲我只是注意到它們在REPL中被轉換爲字符串,但是沒有辦法將它們轉換爲* debug *之外的字符串。 – NielsK

+0

對於查詢,直接使用編譯器,例如:'(compile(table:users)cnx)' –

+0

謝謝,昨天也發現了。爲了完整起見,只要將str函數應用於它就可以將where子句轉換爲字符串。例如:(str(where(=:id 5))) – NielsK