The only problem is that each DB has a different subset of SQL that is available.

Oh, that's easy. You just forget about outer joins, temporary tables, aggregate functions except count() and sum(), optimiser hints, nulls, stored procedures, recursive selects (God forbid), correlatad subqueries, isolation levels, locking strategy and timeouts, user-defined anything....

Seriously, such severely restricted interface can still usefull. See MySQL: no subqueries, no transactions (at the time of my last look), but still very usable as almost-readonly backend for, say, a web site.

Dragi "Bonzi" Raos
_________________________
Dragi "Bonzi" Raos Q#5196 MkII #080000376, 18GB green MkIIa #040103247, 60GB blue