Is SQLJ really database neutral?
Yes. The SQLJ translator makes minimal assumptions about the SQL dialect. We assume, for example, that you can have the following: #sql positer = { … SQL operation …}; if the SQL statement begins with SELECT, but not if it begins with INSERT. The SQL in such constructs is simply passed to the JDBC driver. If your JDBC driver and database understand the SQL dialect you embed, SQLJ doesn’t complain. When semantic analysis is done on a SELECT statement in a #sql construct, SQLJ does not make assumptions that your SELECT statement syntax is SQL92. Nothing about the SQLJ language is JDBC-specific. It can in principle be implemented with interfaces other than JDBC. The Oracle implementation of SQLJ happens to be based on JDBC. 4.