Just some other remarks on different syntax at least between Mysql and Oracle:
you have to think about the different syntax for outer joins for example:
Mysql:
SELECT ...
LEFT JOIN tab1 ON tab1.field1 = tab2.field2

Oracle:
SELECT ....
FROM tab1, tab2
WHERE tab1.field1(+) = tab2.field2

I think it is a hard job to make that DB independent. At the moment my solution is:

switch $::_DB_TYPE {
mysql {
        set outer_tabs "LEFT JOIN tab1 ON tab1.field1 = tab2.field2"
        set outer_where ""
 }
oracle {
        set outer_tabs "tab1, tab2"
        set outer_where "AND tab1.field1(+) = tab2.field2"
 }
        :
        :
}

set sel_str "SELECT ... FROM .... $outer_tabs WHERE 1 = 1 $outer_where"

I wrote a Query class for DIO a while back (also not committed) that would help with this. Basically, the way I ended up doing it was to create different .query files for use in my application. So, I had a mysql.query file and a postgres.query file that defined all of my queries using the new Query class. Like so:

mysql.query:

Query FetchUsers -query "select users from user_table"
Query FetchPermissions -query "select permission from permission_table"
etc...

And then, with a similar file for Postgres. By also creating a common.query file, I could put things in whose syntax was common to both databases. Then, with the Query class and some new additions to DIO, you can just do:

set result [DIO exec FetchUsers]

It was never finished though. The classes are done, but the exec "magic" was never quite completed. It was mostly an experiment anyway. I'll have to commit my work here soon and let others play around with it. Maybe someone can pick up the torch and finish it.

Damon


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to