                 (str "Error resolving SQL param " ~pindex-sym
                   ~(format " as %s: %s" type-label param-expr))
                 e#)))))
-
-
-(defmacro each-param-expr
-  "Return param setter expression."
-  [setter pstmt-sym pindex-sym type-label param-expr]
-  `(~setter ~pstmt-sym ~pindex-sym
-     (try-param ~pindex-sym ~type-label ~param-expr)))
 
 
 (defn lay-param-expr

         ~(lay-param-expr pstmt-sym (get t/multi-typemap param-type) i-sym v-sym)))
    (case (get t/single-typemap param-type)
      :nil        `(set-param-value ~pstmt-sym :nil ~pindex-sym ~pvalue-sym)
      :boolean    `(each-param-expr ~'.setBoolean   ~pstmt-sym ~pindex-sym "boolean"    (boolean    ~pvalue-sym))
      :byte       `(each-param-expr ~'.setByte      ~pstmt-sym ~pindex-sym "byte"       (byte       ~pvalue-sym))
      :byte-array `(each-param-expr ~'.setBytes     ~pstmt-sym ~pindex-sym "byte-array" (byte-array ~pvalue-sym))
      :date       `(let [p# (try-param ~pindex-sym "date" ~pvalue-sym)]
                     (cond
                       (instance? Date p#) (.setDate ~pstmt-sym ~pindex-sym ^java.sql.Date p#)

                  (.setObject prepared-statement param-index ^Object param-value))
    :boolean    (.setBoolean   prepared-statement param-index (boolean    param-value))
    :byte       (.setByte      prepared-statement param-index (byte       param-value))
    :byte-array (.setBytes     prepared-statement param-index (cond
                                                                (= (type param-value) ba-type) param-value
                                                                (nil? param-value) nil
                                                                :else (byte-array param-value)))
    :date       (if (instance? Calendar param-value)
                  (.setDate    prepared-statement param-index (Date. (.getTimeInMillis ^Calendar param-value))
                    ^Calendar param-value)
