Перейти к основному содержимому

Процедуры, определяемые пользователем

примечание

Эта страница переведена при помощи нейросети GigaChat.

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

  • Процедуры определяются с помощью команды CREATE PROCEDURE, а не CREATE FUNCTION.
  • Процедуры не возвращают значение функции; поэтому CREATE PROCEDURE не имеет RETURNS предложения. Однако процедуры могут вместо этого возвращать данные своим вызывающим абонентам через выходные параметры.
  • Хотя функция вызывается как часть запроса или команды DML, процедура вызывается изолированно с использованием команды CALL.
  • Процедура может фиксировать или откатывать транзакции во время ее выполнения (затем автоматически начиная новую транзакцию), если только вызывающая команда не является частью явного блока транзакций. Функция не может этого сделать.
  • Некоторые атрибуты функций, такие как строгость, неприменимы к процедурам. Эти атрибуты управляют тем, как функция используется в запросе, что не относится к процедурам.

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

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