Ответ 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