-The connection is automatically closed on exit from the body."
- `(let ((,db-var (connect ,connection-spec :pool pool
- :database-type database-type :if-exists if-exists)))
- (unwind-protect
- (let ((,db-var ,db-var)) ,@body)
- (disconnect :database ,db-var :pool pool))))
+The connection is automatically closed or released to the pool on exit from the body."
+ (let ((result (gensym "result-")))
+ (unless db-var (setf db-var '*default-database*))
+ `(let ((,db-var (connect ,connection-spec ,@connect-args))
+ (,result nil))
+ (unwind-protect
+ (let ((,db-var ,db-var))
+ (setf ,result (progn ,@body)))
+ (disconnect :database ,db-var))
+ ,result)))
\ No newline at end of file