Get off your high horse, fanboi. Some of us aren't high and mighty DBAs with eleventyseven million $ of Oracle courses under our hat. I just have the misfortune to have to work with what passes for an API against various databases. Views, triggers, stored procedures - all that crap is of zero use to me, and I'd never pretend otherwise. As far as I'm concerned, the less a DB manipulates the data I put into it, the happier I am.
So, how does Oracle support me in this?
* ObEscapeTheBloodyEmptyStrings - check
* Violates its own 4000 byte constraint for nvarchar2 - try anything over 1333 bytes, and it'll fill up your column with garbage instead of, oh, give an error code or something useful. And yes, I mean bytes, not characters. I UTF-8 encoded them myself. And straight USASCII too...
* Data returned in a pretty random LOB container type - check. It seems to be about 50/50 if I get a CLOB or NCLOB. Which meant no end of fun trying to figure out what charset to feed OCILobRead.
Nifty!
Friggin overcomplicated POS.
And further FYI, just because we *can* work with Sqlite doesn't mean it's recommended to do anything complicated with it - those cartesian joins mean long coffee breaks once you go over 4-5 table joins. Works well for development purposes though, and maintaining test databases with gzip and mv is handy.
// Armillary