




 
The function 
sql
 generates SQL from a set of expressions given by 
args
. Each argument to 
sql
 is translated into SQL and then the 
args
 are concatenated with a single space between each pair. The rules for translation into SQL, based on the type of each individual argument 
x
, are as follows:
string => (format nil "'~A'" x)
nil => "NULL"
symbol => (symbol-name x)
number => (princ-to-string x)
list => (format nil "(~{~A~^,~})" (mapcar #'sql x))
vector => (format nil "~{~A~^,~}" (map 'list #'sql x))
sql-expression => x