SQL Server: что может делать хранимая процедура, чего не может сделать пользовательская функция? - PullRequest
2 голосов
/ 02 февраля 2010

Можете ли вы сказать мне, зачем нужна хранимая процедура при наличии UDF?

Ответы [ 5 ]

2 голосов
/ 02 февраля 2010

Сверху моей головы, хранимая процедура может делать следующее, чего не может сделать UDF:

1) Изменить данные

2) Вернуть набор результатов клиенту

3) Выполнить недетерминированную деятельность

1 голос
/ 02 февраля 2010

Одно ключевое отличие состоит в том, что UDF всегда имеют выход фиксированной схемы, хранимые процедуры могут привести к произвольному количеству наборов результатов в произвольном формате.

1 голос
/ 02 февраля 2010

Функция не может напрямую изменять или обновлять базу данных любым способом, с помощью операторов DML (INSERT, UPDATE, DELETE, ect) или операторов DDL (CREATE TABLE и т. Д.). Он также не может делать ничего, что могло бы косвенно привести к изменениям базы данных, например, выполнять специальные операторы SQL (любого рода) или выполнять хранимые процедуры.

1 голос
/ 02 февраля 2010

Процедура может выполняться DML, функция не может.

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

0 голосов
/ 02 февраля 2010

Sprocs используются для возврата вывода в приложение.UDF возвращает табличную переменную.

...