В контексте базы данных MySQL, в чем разница между этими 3 терминами:
P.S. Встроенные функции, такие как функции даты и времени, weekday() считаются чем?
weekday()
Google твой друг. Первое совпадение для «обычной процедуры функции mysql»: http://dev.mysql.com/doc/refman/5.0/en/stored-routines-syntax.html
Краткое резюме:
Хранимая подпрограмма является либо процедурой, либо функцией. Процедура вызывается с помощью оператора CALL и может только возвращать значения, используя выходные переменные. Функция может вызываться изнутри оператора, как и любая другая функция, и может возвращать скалярное значение.
Хранимая подпрограмма является либо процедурой, либо функцией.
Процедура вызывается с помощью оператора CALL и может только возвращать значения, используя выходные переменные.
Функция может вызываться изнутри оператора, как и любая другая функция, и может возвращать скалярное значение.
Здесь я попытался обобщить разницу между функцией и процедурами.
Разница между функцией MySQL и процедурой mysql
Функция MYSQL
Должно возвращать значение.IN, OUT и INOUT нельзя использовать в функции. Но возвращаемый тип данных должен быть объявлен при создании функции.Функция может быть вызвана из оператора SQL.Функция возвращает одно значение.
IN
OUT
INOUT
MYSQL Процедура
Возвращаемые значения не является обязательными, но может использоваться параметр OUT для возврата процедуры.Можно использовать IN |OUT |INOUT параметры.Процедура не может быть вызвана из инструкции SQL.процедура возвращает несколько значений, используя параметры OUT или INOUT.
ПРОЦЕДУРЫ ПРОТИВ ФУНКЦИЙ
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.
Функция должна возвращать значение, но в хранимой процедуре это необязательно (процедура может вернуть ноль или n значений). Функции могут иметь только входные параметры для него, тогда как процедуры могут иметь параметры ввода / вывода. Функции можно вызывать из процедуры, тогда как процедуры нельзя вызывать из функции.