powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Чем процедуры лучше, чем вызрв из программы.
9 сообщений из 9, страница 1 из 1
Чем процедуры лучше, чем вызрв из программы.
    #32915219
emilg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Уважаемые, опыта у меня мало, наверное поэтому и возник этот вопрос.

Чем лучше или хуже использовать процедуры сидящие внутри БД, по сравнению с вызовом SQL комманд прямо из программы. Что показывает опыт и практика, а также научные рекомендации на эту темую или подскажите где об этом можно почитать?

1-ый ответ я придумал сам, при вызове из программы, я могу динамический построить текст SQL и это преимущество по сравнению с константной процедурой, не так ли?

Спасибо за помощь.
...
Рейтинг: 0 / 0
Чем процедуры лучше, чем вызрв из программы.
    #32915242
Фотография Easygoing
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
emilgУважаемые, опыта у меня мало, наверное поэтому и возник этот вопрос.

Чем лучше или хуже использовать процедуры сидящие внутри БД, по сравнению с вызовом SQL комманд прямо из программы. Что показывает опыт и практика, а также научные рекомендации на эту темую или подскажите где об этом можно почитать?

1-ый ответ я придумал сам, при вызове из программы, я могу динамический построить текст SQL и это преимущество по сравнению с константной процедурой, не так ли?

Спасибо за помощь.

Нет не так.

Преимущества хп:

-безопасность
-экономия трафика
-OUTPUT параметры
-сложная логика
-etc
...
Рейтинг: 0 / 0
Чем процедуры лучше, чем вызрв из программы.
    #32915276
Фотография vava
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Весь код запроса можно скрыть в процедуре,в неё передовать только параметры, а обратно ref cursor.
В результате потом можно будет менять запрос без изменения клиента.
Инкапсуляция в общем.
...
Рейтинг: 0 / 0
Чем процедуры лучше, чем вызрв из программы.
    #32915513
Алексей2003
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
безопасность.
немножко сложнее взломать запрос к серверу, правда если в процедуре не используется динамический запрос. все что видно, так только название процедуры.
...
Рейтинг: 0 / 0
Чем процедуры лучше, чем вызрв из программы.
    #32915826
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Свои две копейки (правда, говорю на примере Oracle, возможны вариации в зависимости от БД).

1. Выше скорость. Любой SQL, посланный на сервер, повергается разбору (parsing) и компиляции. Процедура уже хранится в скомпиленном виде, соответственно, на этом экономим время.

2. Безопасность. По умолчанию, процедура выполняется с правами владельца. Т.е. если посылаю просто SQL, у меня должны быть права на работу с этими объектами (SELECT, INSERT и т.д.). Следовательно, если у вызывающего есть права на UPDATE таблицы, то он может это делать и помимо приложения (в Oracle - например, SQL*Plus - изменить ЛЮБЫЕ данные в таблице). Если работа идет через процедуру, то выдается только GRANT на EXECUTE этой процедуры, т.е. изменять можно только то, что позволит процедура
...
Рейтинг: 0 / 0
Чем процедуры лучше, чем вызрв из программы.
    #32917149
andsm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tru551. Выше скорость. Любой SQL, посланный на сервер, повергается разбору (parsing) и компиляции. Процедура уже хранится в скомпиленном виде, соответственно, на этом экономим время.
Для MS SQL2k это не совсем верно. Вначале время на компиляцию тратится, но после некоторого количества вызовов одного и того же запроса включается автопараметризация, и разница по скорости из-за компиляции исчезает. Кроме того, в MS SQL процедура при первом вызове тоже подвергается компиляции - хранится не в откомпилированном виде.

Пункт 2 - верен для работы с таблицами. Если например владелец ХП имеет права sysadmin-a, и в ХП имеется что-то вроде вызова xp_cmdshell, то если вызывающий пользователь не входит в группу сисадминов, ХП не сработает.
...
Рейтинг: 0 / 0
Чем процедуры лучше, чем вызрв из программы.
    #32917359
Sa
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще то тема полуофф.

Использование хранимых процедур предпочтительнее, но это несет в себе некоторые ограничения (не функциональные).

А так, запустите SQL Profiler и посмотрите каким образом выполняется ваш динамически построенный запрос, далее BOL и главный форум.

Код: plaintext
 uid  =  S a
...
Рейтинг: 0 / 0
Чем процедуры лучше, чем вызрв из программы.
    #32917691
Shultze
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как показывают многочисленные обсуждения на этом форуме по этому вопросу все сходятся на том, что если в проекте есть DBA который грамотно может оформить слой данных на T-SQL или PL/SQL то процедуры предпочтительнее. Если нет, то лучше не заморачиваться.
...
Рейтинг: 0 / 0
Чем процедуры лучше, чем вызрв из программы.
    #32917823
tru55
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ShultzeКак показывают многочисленные обсуждения на этом форуме по этому вопросу все сходятся на том, что если в проекте есть DBA который грамотно может оформить слой данных на T-SQL или PL/SQL то процедуры предпочтительнее. Если нет, то лучше не заморачиваться.

Некоторое уточнение.
Как правило, процедуры все таки пишет не DBA (не его это дело), а разработчик. Другое дело, что в одних случаях и клиентскую, и серверную часть пишет один человек, а в других - разные

PS. Хотя согласен - тема не совсем для ADO
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Чем процедуры лучше, чем вызрв из программы.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]