The structure and purpose of SQL scalar functions are similar to C functions or traditional mathematical functions. The caller provides a series of function parameters and the function computes and returns a value. Sometimes these functions are purely functional (in the mathematical sense), in that they compute the result based purely off the parameters with no outside influences. In other cases, the functions are more procedural in nature, and are called to invoke specific side effects.
The body of a function can do pretty much anything you want, including calling out to other libraries. For example, you could write a function that allows SQLite to send email or query the status of a web server all through SQL functions. Your code can also interact with the database and run its own queries.
Although scalar functions can take multiple parameters, they can only return a single value, such as an integer or a string. Functions cannot return rows (a series of values), nor can they return a result set, with rows and columns.
Scalar functions can still be used to process sets of data, however. Consider this SQL statement:
SELECT format( name ) FROM employees;
In this query, the scalar function
format() is applied to every row in the
result set. This is done by calling the scalar function over and over for
each row, as each row is computed. Even though the
format() function is only referenced once in this SQL statement, when the query is executed, it can result in many different ...