I think the dynamic creation of SQL is used if flexibility
is required. If the queries are always the same it would be
enough to store them in a list or hash and then access them
I worked on a concept once where all the SQL would be stored
in a file like so:
%sql_queries = (
1 => qq~SELECT blah FROM blah WHERE id = ?~,
2 => qq~SELECT blah,more_blah FROM blah WHERE id = ? and name = ?~,
);
Then for development the programmers would refer to the
hash and then access the right SQL them via the correct key.
Now this was just an idea that was tossed around and no real
project was developed with it, but the idea brings to point
the rules you talk about in order to "choose" the right query.
I would be interested in seeing your idea of how a "rules" file
would be structured for something like this.