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