(qe (gensym "QUERY-EXPRESSION-"))
(columns (gensym "COLUMNS-"))
(row (gensym "ROW-"))
- (db (gensym "DB-")))
+ (db (gensym "DB-"))
+ (last-form-eval (gensym "LFE-")))
`(let ((,qe ,query-expression)
(,db ,database))
(typecase ,qe
:result-types ,result-types)
(when ,result-set
(unwind-protect
- (do ((,row (make-list ,columns)))
+ (do ((,row (make-list ,columns))
+ (,last-form-eval nil))
((not (database-store-next-row ,result-set ,db ,row))
- nil)
+ ,last-form-eval)
(destructuring-bind ,args ,row
- ,@body))
+ (setq ,last-form-eval
+ (progn
+ ,@body))))
(database-dump-result-set ,result-set ,db)))))))))
(defun map-query (output-type-spec function query-expression