Um procedimento é um objeto de banco de dados semelhante a uma função. As principais diferenças são:
Os procedimentos são definidos com o comando CREATE PROCEDURE, e não com CREATE FUNCTION
Os procedimentos não retornam valor; por isto o comando
CREATE PROCEDURE não possui a cláusula
RETURNS.
Entretanto, os procedimentos podem, em vez disso, retornar dados
para quem efetuou a chamada por meio de parâmetros de saída.
Enquanto a função é chamada como parte de uma consulta ou comando DML (Linguagem de Manipulação de Dados), o procedimento é chamado isoladamente usando o comando CALL.
O procedimento pode efetivar ou desfazer transações durante sua
execução (então iniciando automaticamente uma nova transação),
desde que o comando CALL que chamou o
procedimento não faça parte de um bloco de transação explícito.
Uma função não pode fazer isto.
Certos atributos de função, como STRICT
e IMMUTABLE, não se aplicam a procedimentos.
Estes atributos controlam como a função é usada em uma consulta,
o que não é relevante para procedimentos.
As explicações nas próximas seções sobre como escrever funções definidas pelo usuário também se aplicam aos procedimentos, exceto para os pontos mencionados acima.
Coletivamente, funções e procedimentos também são conhecidos como
rotinas.
Existem comandos como ALTER ROUTINE e
DROP ROUTINE que podem operar em funções e
procedimentos sem precisar conhecer de qual tipo é.
No entanto, deve-se notar não existir o comando
CREATE ROUTINE.