For one, they were database specific, so code written for one database wouldn't work on another, for two reasons.
The first reason is that the APIs were different.
The second reason was that the SQL code was not abstracted, and differences in SQL syntax meant that SQL that worked on one database might not work on another.