[英]Clojure.contrib.sql: How do I retrieve the results of a select statement into a vector that can be accessed anytime?
例如,在此查詢中:
(Clojure.contrib.sql/with-query-results rows ["SELECT count(*) from tableName"] (doseq [record rows] (println (vals record))))
似乎該范圍之外不存在記錄和行,但是我希望它可以隨時存在以供我訪問。
更新:我嘗試了以下代碼行
(def asdf [])
(sql/with-connection db
(sql/with-query-results rows ["SELECT * FROM tableName"] (doseq [record rows] (def asdf (conj asdf record)))))
(println asdf)
當我在sql語句中向其添加行時,為什么上述asdf的print語句返回空?
您似乎對Clojure的基本原理缺乏基本的了解,尤其是不可變的數據結構。 您的conj
調用不會修改var asdf
- var不是變量。 您可以執行以下操作(未經測試)
(def asdf
(sql/with-connection db
(doall (sql/with-query-results rows ["SELECT * FROM tableName"]))))
將結果直接存儲為asdf
的值,但這可能並不是您真正想要的。 相反,請熟悉Clojure的函數式編程 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.