;;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Base: 10 -*-
;;;; *************************************************************************
-;;;; $Id: $
+;;;;
+;;;; $Id$
+;;;;
+;;;; Base SQL functions
+;;;;
+;;;; This file is part of CLSQL.
+;;;;
+;;;; CLSQL users are granted the rights to distribute and use this software
+;;;; as governed by the terms of the Lisp Lesser GNU Public License
+;;;; (http://opensource.franz.com/preamble.html), also known as the LLGPL.
+;;;; *************************************************************************
(in-package #:clsql-base-sys)
(defmacro do-query (((&rest args) query-expression
- &key (database '*default-database*) (types nil))
+ &key (database '*default-database*) (result-types nil))
&body body)
"Repeatedly executes BODY within a binding of ARGS on the attributes
of each record resulting from QUERY. The return value is determined by
`(let ((,db ,database))
(multiple-value-bind (,result-set ,columns)
(database-query-result-set ,query-expression ,db
- :full-set nil :types ,types)
+ :full-set nil :result-types ,result-types)
(when ,result-set
(unwind-protect
(do ((,row (make-list ,columns)))
(defun map-query (output-type-spec function query-expression
&key (database *default-database*)
- (types nil))
+ (result-types nil))
"Map the function over all tuples that are returned by the query in
query-expression. The results of the function are collected as
specified in output-type-spec and returned like in MAP."
`(if (atom ,type) ,type (car ,type))))
(case (type-specifier-atom output-type-spec)
((nil)
- (map-query-for-effect function query-expression database types))
+ (map-query-for-effect function query-expression database result-types))
(list
- (map-query-to-list function query-expression database types))
+ (map-query-to-list function query-expression database result-types))
((simple-vector simple-string vector string array simple-array
bit-vector simple-bit-vector base-string
simple-base-string)
- (map-query-to-simple output-type-spec function query-expression database types))
+ (map-query-to-simple output-type-spec function query-expression database result-types))
(t
(funcall #'map-query (cmucl-compat:result-type-or-lose output-type-spec t)
- function query-expression :database database :types types)))))
+ function query-expression :database database :result-types result-types)))))
-(defun map-query-for-effect (function query-expression database types)
+(defun map-query-for-effect (function query-expression database result-types)
(multiple-value-bind (result-set columns)
(database-query-result-set query-expression database :full-set nil
- :types types)
+ :result-types result-types)
(when result-set
(unwind-protect
(do ((row (make-list columns)))
(apply function row))
(database-dump-result-set result-set database)))))
-(defun map-query-to-list (function query-expression database types)
+(defun map-query-to-list (function query-expression database result-types)
(multiple-value-bind (result-set columns)
(database-query-result-set query-expression database :full-set nil
- :types types)
+ :result-types result-types)
(when result-set
(unwind-protect
(let ((result (list nil)))
(database-dump-result-set result-set database)))))
-(defun map-query-to-simple (output-type-spec function query-expression database types)
+(defun map-query-to-simple (output-type-spec function query-expression database result-types)
(multiple-value-bind (result-set columns rows)
(database-query-result-set query-expression database :full-set t
- :types types)
+ :result-types result-types)
(when result-set
(unwind-protect
(if rows