sql-operation op &rest args => sql-result
sql-operation sql-function name &rest args => sql-result
sql-operation sql-operator inop1 left &rest rights => sql-result
sql-operation sql-boolean-operator inop2 left &rest rights => sql-result
An operator.
A set of arguments for op.
An arbitrary function.
A set of arguments for name.
An infix operator with non-boolean result.
An infix operator that returns a boolean.
Argument to be placed on the left of an infix operator.
Arguments to be placed on the right of an infix operator.
The function sql-operation
takes an operator and its arguments, and returns a SQL expression.
(sql-operation op args)
(apply (sql-operator
op)
args)
.
The pseudo operator sql-function
allows an arbitrary function name to be passed. In this case, name is put in the SQL expression using princ
, and args are given as arguments.
The pseudo operators sql-boolean-operator
and sql-operator
generate SQL that calls an infix operator with left on the left and rights on the right separated by spaces. Use sql-boolean-operator
for SQL infix operators that return a boolean and use sql-operator
for any other SQL infix operator.
The pseudo operator sql-operator
should not be confused with the Common SQL function sql-operator.
The following code, uses sql-operation
to produce a SQL expression.
(sql-operation 'select
(sql-expression :table 'foo :attribute 'bar)
(sql-expression :attribute 'baz)
:from (list
(sql-expression :table 'foo)
(sql-expression :table 'quux))
:where
(sql-operation 'or
(sql-operation '>
(sql-expression :attribute 'baz)
3)
(sql-operation 'like
(sql-expression :table 'foo :attribute 'bar)
"SU%")))
The following SQL expression is produced.
#<SQL-QUERY: "(SELECT FOO.BAR,BAZ FROM FOO,QUUX
WHERE ((BAZ > 3) OR (FOO.BAR LIKE 'SU%')))">
The following code illustrates use of the pseudo operator sql-function
:
(sql-operation 'sql-function "TO_DATE" "03/06/99"
"mm/DD/RR")
The following SQL expression is produced.
#<SQL-VALUE-EXP "TO_DATE('03/06/99','mm/DD/RR')">
LispWorks User Guide and Reference Manual - 20 Sep 2017