Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
 отличие Функции от Процедуры  [new]
dermama
Member

Откуда:
Сообщений: 188
Товарищи, привет

Подскажите пожалуйста чем функция отличается от процедуры. Знаю, что процедура запускается посредством EXEC, а функцию можно через SELECT. Чем еще?
30 мар 19, 21:54    [21848015]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36280
Примерно тем же, чем трамвай от автобуса.
30 мар 19, 23:09    [21848078]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
dermama
Member

Откуда:
Сообщений: 188
Гавриленко Сергей Алексеевич
Примерно тем же, чем трамвай от автобуса.


а техническим языком можно объяснить, пожалуйста?)
30 мар 19, 23:37    [21848095]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
Valera Kochemasov
Member

Откуда: Moscow
Сообщений: 19
dermama,
функция всегда что-нибудь возвращает, а процедура что-то производит и не обязательно возвращает, хотя может (через аргументы, заданные с опцией "out" или как "select something")
31 мар 19, 00:34    [21848103]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
dermama
Member

Откуда:
Сообщений: 188
Valera Kochemasov
dermama,
функция всегда что-нибудь возвращает, а процедура что-то производит и не обязательно возвращает, хотя может (через аргументы, заданные с опцией "out" или как "select something")


большое спасибо. все понятно
31 мар 19, 00:37    [21848105]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36280
dermama
Valera Kochemasov
dermama,
функция всегда что-нибудь возвращает, а процедура что-то производит и не обязательно возвращает, хотя может (через аргументы, заданные с опцией "out" или как "select something")


большое спасибо. все понятно
Не слушайте неучей. Во-первых, процедура всегда что-то возвращает (return, ага), во-вторых, процедура не обязательно что-то производит. Читайте хелп, в общем.
31 мар 19, 00:52    [21848110]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6383
dermama,

Функция не меняет данные
31 мар 19, 10:36    [21848163]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
Сруль.
Member

Откуда:
Сообщений: 107
Функциям не позволенно писать на диск.
Через это дело в функциях запрещён вызов процедур.
Сервер не держит в баффере предыдущие запуски функций, в отличии от процедур,
что влияет на быстродействие всего проекта.
Короче, вещь хорошая, но не бесплатная.
31 мар 19, 11:32    [21848181]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 46780
Сруль.
в функциях запрещён вызов процедур.
Не совсем так.
31 мар 19, 11:47    [21848187]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
dermama
Member

Откуда:
Сообщений: 188
На основании ваших ответов сделаю вывод что,

функция всегда возвращает какое то значение. Процедура может возвращать, а может и не возвращать. Но это не главное.
Главное, что функцию можно использовать в выражениях, а процедуру нужно выполнять.
31 мар 19, 15:51    [21848291]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6383
dermama
На основании ваших ответов сделаю вывод что,

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

Insert into... Exec запретили уже?
31 мар 19, 19:47    [21848382]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
dermama
Member

Откуда:
Сообщений: 188
[quot TaPaK]
dermama
На основании ваших ответов сделаю вывод что,


Insert into... Exec запретили уже?


ну к процедуре exec и имеет отношение
а insert into к чему?
31 мар 19, 20:38    [21848407]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28746
dermama
На основании ваших ответов сделаю вывод что,

функция всегда возвращает какое то значение. Процедура может возвращать, а может и не возвращать. Но это не главное.
Главное, что функцию можно использовать в выражениях, а процедуру нужно выполнять.
В главном можно сформулировать так:
1. Функцию можно использовать в части FROM операторов DML, а процедуру нельзя.
2. В коде функций больше различных ограничений, по сравнению с процедурами.
31 мар 19, 21:09    [21848418]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
TaPaK
Member

Откуда: Kiev
Сообщений: 6383
alexeyvg,

Openquery?


автор
ну к процедуре exec и имеет отношение
а insert into к чему?

Ну, когда нибудь узнаете
31 мар 19, 21:13    [21848421]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
iap
Member

Откуда: Москва
Сообщений: 46780
alexeyvg
Функцию можно использовать в части FROM операторов DML
Только табличную.
31 мар 19, 21:27    [21848428]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28746
TaPaK
alexeyvg,

Openquery?
А, ну да, и текстовые файлы можно использовать в FROM и JOIN :-)

Openquery - это такая особая функция, а уж то, что там у неё в параметрах, и откуда она там берёт данные - это уже работа её кода, то есть ни текстовые файлы, ни процедуры сами по себе в FROM указать всё таки нельзя.
31 мар 19, 21:35    [21848437]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28746
iap
alexeyvg
Функцию можно использовать в части FROM операторов DML
Только табличную.
Да, виноват, это я не полно написал, только про табличные функции.

Немного дополню:
dermama
На основании ваших ответов сделаю вывод что,

функция всегда возвращает какое то значение. Процедура может возвращать, а может и не возвращать. Но это не главное.
Главное, что функцию можно использовать в выражениях, а процедуру нужно выполнять.
В главном можно сформулировать так:
1. Табличную функцию можно использовать в части FROM операторов DML, а процедуру нельзя.
2. Скалярную функцию можно использовать в выражениях, а процедуру нельзя.
3. В коде функций больше различных ограничений, по сравнению с процедурами.
31 мар 19, 21:37    [21848442]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
alexeyvg
Member

Откуда: Moscow
Сообщений: 28746
Гавриленко Сергей Алексеевич
Читайте хелп, в общем.
Документация сейчас ужасна.
Вот про функции, но почему там нет про пользовательские функции, про то, о чём спрашивает ТС??? https://docs.microsoft.com/ru-ru/sql/t-sql/functions/functions?view=sql-server-2017

Самому найти такую базовую информацию, которая в принципе должна быть где то наверху, очень трудно.
Значит, надо начать с того, что прочитать весь хелп, а потом уже установить сиквел? Или взять учебник, и полгода читать главу за главой, выполняя упражнение за упражнением? Никто так не будет делать.
Так что спрашивать - разумный вариант, и хорошо, если рядом есть какой нибудь спец.
31 мар 19, 21:51    [21848450]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
invm
Member

Откуда: Москва
Сообщений: 8665
dermama,

Можно взять за основу - https://www.dotnettricks.com/learn/sqlserver/difference-between-stored-procedure-and-function-in-sql-server

За исключением "A function is compiled and executed every time whenever it is called"
31 мар 19, 21:52    [21848452]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
dermama
Member

Откуда:
Сообщений: 188
Товарищи, благодарю вас за ответы, теперь необходимо все это усвоить!
31 мар 19, 22:27    [21848472]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36280
alexeyvg
Гавриленко Сергей Алексеевич
Читайте хелп, в общем.
Документация сейчас ужасна.
Для черпания академических знаний -- безусловно. Такие знания на лекциях надо было усваивать.
1 апр 19, 00:09    [21848549]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
aleks222
Member

Откуда:
Сообщений: 696
Гавриленко Сергей Алексеевич
alexeyvg
пропущено...
Документация сейчас ужасна.
Для черпания академических знаний -- безусловно. Такие знания на лекциях надо было усваивать.


Давно ли "знания" по устройству конкретной "программулины" стали академическими?
Лекции, подобной тематики, бесполезны чуть более, чем полностью.

ЗЫ. В чем проблема современных "программиздов" - их учили "работать в имярек". Т.е. набору названий, без понимания сущности.
Когда-то, давным-давно, учили придумывать алгоритм(ы).
1 апр 19, 07:38    [21848639]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
Glebanski
Member

Откуда: Msk ->NL
Сообщений: 292
aleks222,

Когда-то, в 80е и 90е путь от теории к применению на работе был гораздо короче. И его можно было освоить за выделенное время в Вузе. Сейчас, через 30 лет, он стал весьма длиннее. И знание ассемблера и STEAL/No Steal приблизят тебя к практике не на 10%,как в 80е, а на 0.5%.

Самые популярные external тренинги, на которых делается основная прибыль - угадайте какие. Ага. Microsoft Tsql и Oracle. Программулины.
1 апр 19, 23:10    [21849538]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
Valera Kochemasov
Member

Откуда: Moscow
Сообщений: 19
Гавриленко Сергей Алексеевич,

Академик учёный, тут человек попросил по простому объяснить, а ты, гордый такой, послал его ... в хелп вместо того, чтобы доступно рассказать начинающему хотя бы начальные сведения.
8 апр 19, 22:40    [21856548]     Ответить | Цитировать Сообщить модератору
 Re: отличие Функции от Процедуры  [new]
Гавриленко Сергей Алексеевич
Member

Откуда: Moscow
Сообщений: 36280
Valera Kochemasov
Гавриленко Сергей Алексеевич,

Академик учёный, тут человек попросил по простому объяснить, а ты, гордый такой, послал его ... в хелп вместо того, чтобы доступно рассказать начинающему хотя бы начальные сведения.
Лучше читать хелп, чем начальные знания в интерпретации человека, который считает, что в хелп посылают вместо "на ..й". Начальные сведения либо на лекциях, либо в ненавистном вам хелпе и прочих публикациях, которые, омг, надо погуглить.
9 апр 19, 00:13    [21856568]     Ответить | Цитировать Сообщить модератору
Топик располагается на нескольких страницах: [1] 2   вперед  Ctrl      все
Все форумы / Microsoft SQL Server Ответить