различия между процедурой и функцией и рутиной? - PullRequest
69 голосов
/ 21 апреля 2010

В контексте базы данных MySQL, в чем разница между этими 3 терминами:

  • хранимая процедура;
  • сохраненная процедура;
  • сохраненная функция.

P.S. Встроенные функции, такие как функции даты и времени, weekday() считаются чем?

Ответы [ 5 ]

77 голосов
/ 21 апреля 2010

Google твой друг. Первое совпадение для «обычной процедуры функции mysql»: http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html

Краткое резюме:

Хранимая подпрограмма является либо процедурой, либо функцией.

Процедура вызывается с помощью оператора CALL и может только возвращать значения, используя выходные переменные.

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

35 голосов
/ 25 июля 2014

Здесь я попытался обобщить разницу между функцией и процедурами.

  1. FUNCTION всегда возвращает значение, используя оператор return. ПРОЦЕДУРА может возвращать одно или несколько значений через параметры или не возвращать их вообще.
  2. Функции обычно используются для вычислений, когда процедуры обычно используются для выполнения бизнес-логики.
  3. Функция возвращает только 1 значение. Процедура может возвращать несколько значений (максимум 1024).
  4. Хранимая процедура всегда возвращает целочисленное значение ноль по умолчанию. Принимая во внимание, что возвращаемые функции функции могут быть скалярными или табличными или табличными значениями.
  5. Хранимые процедуры имеют предварительно скомпилированный план выполнения, в отличие от функций.
  6. Функция может быть вызвана напрямую оператором SQL, например select func_name из dual, тогда как процедуры не могут.
  7. Хранимая процедура имеет безопасность и уменьшает сетевой трафик, а также мы можем вызвать хранимую процедуру в любое нет. приложений одновременно.
  8. Функция может использоваться в запросах SQL, в то время как процедура не может использоваться в запросах SQL. Это вызывает существенное различие между ч / б функцией и процедурами.
28 голосов
/ 14 марта 2012

Разница между функцией MySQL и процедурой mysql

Функция MYSQL

Должно возвращать значение.IN, OUT и INOUT нельзя использовать в функции. Но возвращаемый тип данных должен быть объявлен при создании функции.Функция может быть вызвана из оператора SQL.Функция возвращает одно значение.

MYSQL Процедура

Возвращаемые значения не является обязательными, но может использоваться параметр OUT для возврата процедуры.Можно использовать IN |OUT |INOUT параметры.Процедура не может быть вызвана из инструкции SQL.процедура возвращает несколько значений, используя параметры OUT или INOUT.

3 голосов
/ 22 ноября 2018

ПРОЦЕДУРЫ ПРОТИВ ФУНКЦИЙ

1.  PROCEDURES may or may not return a value but FUNCTION must return a value
2.  PROCEDURES can have input/output parameter but FUNCTION only has input parameter.
3.  We can call FUNCTION from PROCEDURES but cannot call PROCEDURES from a function. 
4.  We cannot use PROCEDURES in SQL statement like SELECT, INSERT, UPDATE, DELETE, MERGE etc. but we can use them with FUNCTION.
5.  We can use try-catch exception handling in PROCEDURES but we cannot do that in FUNCTION. 
6.  We can use transaction in PROCEDURES but it is not possible in FUNCTION.
2 голосов
/ 08 ноября 2017

Функция должна возвращать значение, но в хранимой процедуре это необязательно (процедура может вернуть ноль или n значений). Функции могут иметь только входные параметры для него, тогда как процедуры могут иметь параметры ввода / вывода. Функции можно вызывать из процедуры, тогда как процедуры нельзя вызывать из функции.

...