diff --git a/src/next/jdbc/result_set.clj b/src/next/jdbc/result_set.clj index d469392..b821bdc 100644 --- a/src/next/jdbc/result_set.clj +++ b/src/next/jdbc/result_set.clj @@ -699,8 +699,8 @@ (first sql-params) (rest sql-params) opts)] - (if (:multi-rs opts) - (loop [go (.execute stmt) acc nil rsn 0] + (if-let [multi (:multi-rs opts)] + (loop [go (.execute stmt) acc (if (= :delimited multi) nil []) rsn 0] (let [rs (if-let [rs (stmt->result-set' stmt go opts)] (datafiable-result-set rs this opts) (let [n (.getUpdateCount stmt)] @@ -710,11 +710,14 @@ (if-not rs acc (recur (.getMoreResults stmt) - (if acc - (-> acc - (conj {:next.jdbc/result-set rsn}) - (into rs)) - rs) + (cond (not= :delimited multi) + (conj acc rs) + acc + (-> acc + (conj {:next.jdbc/result-set rsn}) + (into rs)) + :else + rs) (inc rsn))))) (if-let [rs (stmt->result-set stmt opts)] (datafiable-result-set rs this opts) diff --git a/test/next/jdbc_test.clj b/test/next/jdbc_test.clj index e05645d..4d601a9 100644 --- a/test/next/jdbc_test.clj +++ b/test/next/jdbc_test.clj @@ -315,10 +315,14 @@ VALUES ('Pear', 'green', 49, 47) (when (stored-proc?) (testing "stored proc; multiple result sets" (try - (println "====" (:dbtype (db)) "====") + (println "====" (:dbtype (db)) "==== true") (clojure.pprint/pprint (jdbc/execute! (ds) [(if (mssql?) "EXEC FRUITP" "CALL FRUITP()")] {:multi-rs true})) + (println "====" (:dbtype (db)) "==== :delimited") + (clojure.pprint/pprint + (jdbc/execute! (ds) [(if (mssql?) "EXEC FRUITP" "CALL FRUITP()")] + {:multi-rs :delimited})) (catch Throwable t (println 'call-proc (:dbtype (db)) (ex-message t) (some-> t (ex-cause) (ex-message))))))))