X-Git-Url: http://git.kpe.io/?a=blobdiff_plain;f=sql-classes.lisp;h=08d16cffbcc720cef635fe63c1104d30ad7f8d48;hb=9933fa3041681062c104cb9459f4d8c5d111c810;hp=a160c68ad0e894ea2af08e8e5b59e04b5da45771;hpb=619d798fb1b5b996a251d50c90d1fc6144801f11;p=umlisp.git diff --git a/sql-classes.lisp b/sql-classes.lisp index a160c68..08d16cf 100644 --- a/sql-classes.lisp +++ b/sql-classes.lisp @@ -7,7 +7,7 @@ ;;;; Author: Kevin M. Rosenberg ;;;; Date Started: Apr 2000 ;;;; -;;;; $Id: sql-classes.lisp,v 1.25 2003/05/03 19:35:31 kevin Exp $ +;;;; $Id: sql-classes.lisp,v 1.27 2003/05/03 19:53:59 kevin Exp $ ;;;; ;;;; This file, part of UMLisp, is ;;;; Copyright (c) 2000-2002 by Kevin M. Rosenberg, M.D. @@ -56,6 +56,27 @@ is OBJNAME from TABLE where WHERE-NAME field = WHERE-VALUE with FIELDS" :lrlname lrlname :single single :distinct distinct :order order :like like)))) +(defmacro query-string-macro (table fields &optional srl where-name where-value + &key (lrlname "KCUILRL") single distinct order like) + (let* ((%%fields (format nil "select ~A~{~:@(~A~)~^,~}" + (if distinct "distinct " "") (quote fields))) + (%%order (if order (format nil " order by ~{~:@(~A~) ~(~A~)~^,~}" order) ""))) + `(concatenate + 'string + (format nil "select ~A from ~:@(~A~)" ,%%fields ,table) + (if ,where-name + (format nil + (if (stringp ,where-value) + (if like + " where ~A like '%~A%'" + " where ~A='~A'") + " where ~A=~A") + ,where-name ,where-value) + "") + (if ,srl (format nil " and ~:@(~A~) <= ~D" ,lrlname ,srl) "") + ,%%order + (if ,single " limit 1" "")))) + (defun query-string (table fields &optional srl where-name where-value &key (lrlname "KCUILRL") single distinct order like) (concatenate