X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=base%2Fbasic-sql.lisp;h=055e33a20dda2b351c09b0869049e5170afadac3;hb=f716bb1161cf9e89a96945c4a444244f9d303691;hp=7b5452823748c5451baf6caff8b14c8324f37fa8;hpb=525ebf7f1f8d26475151cf64b658b9da7f578a37;p=clsql.git diff --git a/base/basic-sql.lisp b/base/basic-sql.lisp index 7b54528..055e33a 100644 --- a/base/basic-sql.lisp +++ b/base/basic-sql.lisp @@ -30,14 +30,17 @@ one result per row. Returns a list of lists of values of the result of that expression and a list of field names selected in sql-exp.")) (defmethod query ((query-expression string) &key (database *default-database*) - (result-types nil) (flatp nil)) + (result-types nil) (flatp nil) (field-names t)) (record-sql-action query-expression :query database) - (let* ((res (database-query query-expression database result-types)) - (res (if (and flatp (= 1 (length (car res)))) - (mapcar #'car res) - res))) - (record-sql-action res :result database) - res)) + (multiple-value-bind (rows names) (database-query query-expression database result-types + field-names) + (let ((result (if (and flatp (= 1 (length (car rows)))) + (mapcar #'car rows) + rows))) + (record-sql-action result :result database) + (if field-names + (values result names) + result)))) ;;; Execute