Un procedimiento es un objeto de base de datos similar a una función. Las diferencias clave son:
Los procedimientos se definen con el comando CREATE
PROCEDURE, no con CREATE FUNCTION.
Los procedimientos no devuelven un valor de función; por lo tanto, CREATE
PROCEDURE carece de la cláusula RETURNS. Sin embargo, los
procedimientos pueden en su lugar devolver datos a quienes los invocan a través de parámetros
de salida.
Mientras que una función se invoca como parte de una consulta o comando DML, un procedimiento se
invoca de forma aislada utilizando el comando CALL.
Un procedimiento puede confirmar (commit) o revertir (roll back) transacciones durante su ejecución
(iniciando automáticamente una nueva transacción después), siempre y cuando el comando
CALL invocado no sea parte de un bloque de transacción explícito. Una función
no puede hacer eso.
Ciertos atributos de función, como la estrictez (strictness), no se aplican a los procedimientos. Esos atributos controlan cómo se utiliza la función en una consulta, lo cual no es relevante para los procedimientos.
Las explicaciones de las siguientes secciones sobre cómo definir funciones definidas por el usuario también se aplican a los procedimientos, excepto por los puntos señalados anteriormente.
Colectivamente, las funciones y los procedimientos también se conocen como
rutinas.
Existen comandos como ALTER ROUTINE y
DROP ROUTINE que pueden operar sobre funciones y
procedures sin necesidad de saber de qué tipo se trata. Ten en cuenta, sin embargo, que
no existe el comando CREATE ROUTINE.