Может ли кто-нибудь объяснить, что представляет собой точная разница между хранимыми процедурами и определенными пользователем функциями и в каком контексте полезно?
Разница между хранимыми процедурами и определенными пользователем функциями
Ответ 1
Это то, что я всегда помню:)
- Процедура может возвращать значения нуля или n, тогда как функция может возвращать одно обязательное значение.
- Процедуры могут иметь параметры ввода/вывода для него, тогда как функции могут иметь только входные параметры.
- Процедура позволяет выбирать, а также оператор DML, в то время как функция допускает в нем только оператор select.
- Функции могут вызываться из процедуры, тогда как процедуры не могут быть вызваны из функции.
- Исключение может выполняться блоком try-catch в процедуре, тогда как блок try-catch не может использоваться в функции.
- Мы можем пойти для управления транзакциями в процедуре, тогда как мы не можем войти в функцию.
- Процедуры не могут использоваться в инструкции select, тогда как функция может быть встроена в оператор select.
- UDF может использоваться в операторах SQL в любом месте раздела WHERE/HAVING/SELECT, где хранимые процедуры не могут быть.
- UDF, которые возвращают таблицы, могут рассматриваться как другой набор строк. Это можно использовать в JOINs с другими таблицами.
- Inline UDF может быть хотя в виде представлений, которые принимают параметры и могут использоваться в JOIN и других операциях Rowset.
Источник http://www.codeproject.com/Tips/286539/Difference-between-stored-procedure-and-function
Ответ 2
Функция всегда возвращает значение и может не выполнять инструкции DML (INSERT/UPDATE/DELETE).
Хранимая процедура не может вернуть значение - вам нужно использовать параметр OUT - и может запускать инструкции DML.
Преимущество использования функции и хранимой процедуры?
Помимо сравнения выше, они равны. Но, учитывая сравнение, в зависимости от того, что вам нужно сделать, вероятно, вы будете использовать хранимую процедуру чаще, чем функцию.
Ответ 3
Read
Сохраненные процедуры и пользовательские функции в Microsoft SQL Server
Выбор между хранимыми процедурами, функциями, представлениями, триггерами
Ответ 4
Пользовательская функция имеет несколько ограничений, таких как записи DML, которые можно использовать и т.д. PLS check