SQL's built-in functions complement inherent deficiencies in the nonprocedural language. They perform many useful tasks, ranging from rounding numbers to string manipulation to conversion of data types to the sophisticated processing logic of substitute functions.
While the number of functions defined in SQL92/99 standards is relatively small (although expanded in SQL:2003), every RDBMS vendor has added its own set of these useful tools well in excess of hundreds. Therefore, it should not come as a surprise that functions differ across the vendors—by capability, implementation details, syntax, or simply by being included or excluded from the implementation. Never assume that an SQL function found in one implementation would exist in another.
To enhance RDBMS functionality and alleviate some deficiencies inherent in SQL, the early RDBMSs have introduced procedural extensions to the language. These extensions allow for creating programs running inside the RDBMS, which implement procedural logic and allow for structured programming techniques to be used. They also offer the benefits of increased efficiency, enhanced security, and code reusability.