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