我试图将一个字符串数组传递给select语句,并且我一直收到错误:
org.postgresql.util.PSQLException: Can't infer the SQL type to use for an instance of clojure.lang.PersistentVector. Use setObject() with an explicit Types value to specify the type to use.
我知道列类型是正确的,看起来好像传递一个向量是罪魁祸首。这样做的正确方法是什么?
sql语句的格式如下:
" SELECT * FROM said_table WHERE item_id IN(?)"
答案 0 :(得分:1)
这个答案假设您正在使用jdbc而不是korma或类似的东西,需要直接生成sql而不是通过某些工具:
in
指令要求您为列表中的每个项目创建一个?
。当其他东西需要我手动构建SQL时,我最终使用这种模式:
(let [placeholders (s/join ", " (repeat (count things-go-here) "?"))
query "SELECT * FROM said_table WHERE item_id IN (%s)"]
(exec-raw [(format query placeholders) things-go-here] :results)
....)