Процедура — это объект базы данных, аналогичный функции. Ключевые отличия заключаются в следующем:
Процедуры определяются с помощью
команды CREATE
PROCEDURE команда, а не CREATE
FUNCTION.
Процедуры не возвращают функциональное значение, поэтому в них CREATE
PROCEDURE отсутствует RETURNS предложение.
Тем не менее, процедуры могут возвращать данные вызывающей стороне через
выходные параметры.
В то время как функция вызывается в составе запроса или DML-команды,
процедура вызывается отдельно с помощью
команды CALL команды.
Процедура может фиксировать или откатывать транзакции в процессе своего
выполнения (автоматически инициируя при этом новую транзакцию), если
вызывающая CALL команда не является частью
явный блок транзакции. Функция не может выполнять данную операцию.
Определенные атрибуты функции, такие как признак строгости (strictness), не применяются к процедурам. Данные атрибуты определяют способ использования функции в запросе, что не актуально для процедур.
Приведенные в следующих разделах пояснения по определению пользовательских функций применимы и к процедурам, за исключением вышеуказанных различий.
В совокупности функции и процедуры также называют routines.
Существуют такие команды, как ALTER ROUTINE
и DROP ROUTINE , которые позволяют работать с функциями и процедурами без необходимости уточнения их типа. Однако следует учитывать, что команды CREATE ROUTINE не существует.