I was surprised by the quality of the software available. Consider for instance SQLite. Just one glance at the SQL supported comes to tell you what the goal of the authors is. They want to have something short, simple, effective, fast. And the target was hit. Though one may miss stored procedures initially, the triggers are to the rescue and simple procedures may reside in the trigger body. But think about it: for an engine running in the same process, should one refrain from making series of database calls?! I guess not. Still maintaing the SQL script as a resource outside of the C/C++ code is a good practice and triggers are the enabler.
The simplicity is in no way limiting. Implementing custom functions or even replacing "out of the box" functions cannot be easier. Without prior knowledge, just looking at the source code and the web site documentation I managed to create a simple math and blob manipulation library in just few hours. Intend to post the source code ( or contribute it back to SQLite ) in the next few days.
Just wanted to say big thank you to the SQLite development team. With the excellent design, implementation and just right amount documentation you saved me a lot of development and debugging time. Cheers!
SQLite can be found here: http://www.sqlite.org/