Clojure.contrib.sql:如何将select语句的结果检索到可以随时访问的向量中?
例如,在此查询中:Clojure.contrib.sql:如何将select语句的结果检索到可以随时访问的向量中?,sql,clojure,Sql,Clojure,例如,在此查询中: (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 row
(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的值,但这可能不是您真正想要的。相反,要熟悉