From: Philip Aylesworth <zopelist@regalint.com> I'll correct myself here. I was thinking of the <!--#sqlgroup ...--> tag. I don't know what <!--#sqltest ...--> does that <!--#sqlvar name--> or <!--#var name fmt=sql--> won't do...
A _very very_ nice feature of #sqltest is the 'multiple' feature. For example: SELECT * FROM inbox WHERE <!--#sqltest doc_status type=string multiple--> If doc_status is passed in as a single value, like "foo", the SQL statement will be rendered as:: SELECT * FROM inbox WHERE doc_status='foo' BUT!!! (this is where it gets good), if doc_status is passed in as a list/sequence, like ["foo", "bar", "drop", "ship"], it will be rendered as:: SELECT * FROM inbox WHERE doc_status in ('foo','bar,'drop','ship') This is an _extremely_ handy feature of #sqltest. Prior to #sqltest, doing the above might be like: SELECT * FROM inbox WHERE doc_status in ( <!--#in doc_status--> '<!--#var sequence-item fmt=sql-->' <!--#else sequence-end-->,<!--#/else--> <!--#/in-->) (#else used to be used where #unless is used today). The above code also always required doc_status to be passed in as a sequence. #sqltest is smart enough (I believe - i've never been bitten by this) to detect the difference between strings and lists. I've used #sqltest with multiple many times with Acquisition where a folder property would define part of a SQL statement. That property in some cases would be a single value, in other places it would be a tokens or lines property. So, in otherwords, you get the type checking, the multiple, the optional, etc... with #sqltest that you don't get otherwise. About the only problem is that #sqltest currently doesn't do not-equals or "not in (...)". .jPS | jeffrey@digicool.com zope, through the web. www.zope.org