Пользовательские процедуры

Процедура — это объект базы данных, похожий на функцию. Основные отличия состоят в следующем:

  • Процедуры определяются командой CREATE PROCEDURE, а не CREATE FUNCTION.

  • Процедуры, в отличие от функций, не возвращают значения, поэтому у команды CREATE PROCEDURE нет предложения RETURNS. Однако процедуры могут возвращать данные в вызывающую функцию через выходные параметры.

  • В том время как функция вызывается как часть запроса или команды DML, процедура вызывается отдельно с помощью команды CALL.

  • Процедура во время своего выполнения может фиксировать или откатывать транзакции (а затем автоматически начинать новую транзакцию), если команда CALL не является частью явного блока транзакции. Для функции это невозможно.

  • Некоторые атрибуты функций, например строгость, неприменимы к процедурам. Эти атрибуты управляют тем, как функция используется в запросе, что для процедур нерелевантно.

Изложенные далее в этой главе пояснения по определению пользовательских функций также применимы и к процедурам, за исключением вышеупомянутых особенностей.

Функции и процедуры в совокупности также называются подпрограммами. Существуют команды ALTER ROUTINE и DROP ROUTINE, которые могут работать с функциями и процедурами без необходимости указания точного вида объекта. Однако обратите внимание, что команды CREATE ROUTINE нет.