Dmitry Olshansky Wrote:

> On 14.10.2011 19:13, foobar wrote:
> > Andrei Alexandrescu Wrote:
> >
> >> On 10/14/11 6:08 AM, Jacob Carlborg wrote:
> >>> On 2011-10-14 12:19, foobar wrote:
> >>>> Has anyone looked at Nemerle's design for this?
> >>>> They have an SQL macro which allows to write SQL such as:
> >>>>
> >>>> var employName = "FooBar"
> >>>> SQL (DBconn, "select * from employees where name = $employName");
> >>>>
> >>>> what that supposed to do is bind the variable(s) and it also validates
> >>>> the sql query with the database. This is all done at compile-time.
> >>>>
> >>>> My understanding is that D's compile-time features are powerful enough
> >>>> to implement this.
> >>>
> >>> You cannot connect to a database in D at compile time. You could some
> >>> form of validation and escape the query without connecting to the 
> >>> database.
> >>
> >> A little SQL interpreter can be written that figures out e.g. the names
> >> of the columns involved.
> >>
> >> Andrei
> >
> > The downsides with writing a separate SQL interpreter are:
> >
> > a) No connection to the DB means no way to validate the schema, e.g. the db 
> > might not even have a 'name' column in the employees table.
> 
> The upside is that you can at least rebuild your app when database is 
> down or compile it on a separate machine.
> 
> > b) No way to validate the SQL per the exact version the DB uses. E.g. LIMIT 
> > vs. TOP and also DB vendor specific extensions to SQL syntax.
> > c) NIH - implementing your own SQL interpreter when the DB vendor already 
> > provides it.
> >
> > oh, well, perhaps it would be possible with D3 once it supports proper 
> > macros. In any case, such a macro probably would be built atop the DB API 
> > currently being discussed.
> 
> 
> -- 
> Dmitry Olshansky

That's just silly, why would you use a validating SQL macro if you do not want 
(or don't have the environment set up) to validate the SQL? 

Reply via email to