Относительно вложенной хранимой процедуры - PullRequest
2 голосов
/ 02 марта 2012

Является ли хорошей практикой использование вложенных хранимых процедур (имеется в виду вызов хранимой процедуры внутри другой хранимой процедуры)? Есть ли какие-то меры предосторожности, которым нужно следовать при вложении хранимых процедур? Есть ли допустимое ограничение на количество гнезд, в которые можно вложить?

Спасибо в ожидании

Ответы [ 2 ]

4 голосов
/ 02 марта 2012

Максимальный уровень вложенности составляет 32 Вложенные хранимые процедуры .
На мой взгляд, реальный недостаток этого состоит в том, что он быстро выходит из-под контроля того, что SP зависит от другого SP. Риск состоит в том, что вы изменяете что-то в одном SP, что имеет непредвиденные последствия в другом SP. Как только это укусило вас пару раз, вы колеблетесь, прежде чем менять SP, и подумываете о создании нового, который делает почти то же самое, и через некоторое время никто не знает, почему SP есть или он действительно используется. Легко запутывается.

3 голосов
/ 02 марта 2012

Да, есть ограничение на уровень вложенности.Из руководства :

Вы можете вкладывать хранимые процедуры […] до 32 уровней.

Факт существования ограничения может означать, что слишком много вложенных вызовов хранимых процедур не очень хорошая вещь.Тем не менее, максимальный уровень кажется мне достаточно большим, чтобы не беспокоиться о вложенности вызовов, таких как 5 или около того уровней.

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

Я не хочу сказать,что вы всегда должны стараться учитывать ваши хранимые процедуры любой ценой, я просто не вижу ничего плохого в том, что вам придется вкладывать свои процедуры, если это будет лучше соответствовать вашему дизайну.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...