Chapter 19. Stored Procedures and Functions
Stored routines (procedures and functions) are supported in MySQL
5.1. A stored procedure is a set of SQL statements that
can be stored in the server. Once this has been done, clients don't
need to keep reissuing the individual statements but can refer to
the stored procedure instead.
Some situations where stored routines can be particularly useful:
When multiple client applications are written in different
languages or work on different platforms, but need to perform
the same database operations.
When security is paramount. Banks, for example, use stored
procedures and functions for all common operations. This
provides a consistent and secure environment, and routines can
ensure that each operation is properly logged. In such a setup,
applications and users would have no access to the database
tables directly, but can only execute specific stored routines.
Stored routines can provide improved performance because less
information needs to be sent between the server and the client. The
tradeoff is that this does increase the load on the database server
because more of the work is done on the server side and less is done
on the client (application) side. Consider this if many client
machines (such as Web servers) are serviced by only one or a few
Stored routines also allow you to have libraries of functions in the
database server. This is a feature shared by modern application
languages that allow such design internally (for example, by using
classes). Using these client application language features is
beneficial for the programmer even outside the scope of database
MySQL follows the SQL:2003 syntax for stored routines, which is also
used by IBM's DB2.
The MySQL implementation of stored routines is still in progress.
All syntax described in this chapter is supported and any
limitations and extensions are documented where appropriate. Further
discussion of restrictions on use of stored routines is given in
Section I.1, “Restrictions on Stored Routines and Triggers”.
Binary logging for stored routines takes place as described in
Section 19.4, “Binary Logging of Stored Routines and Triggers”.