簡體   English   中英

Clojure.contrib.sql:如何將select語句的結果檢索到可以隨時訪問的向量中?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM