Да, существует ограничение на уровень гнездования. От manual:
Вы можете вложить хранимые процедуры [...] до 32 уровней.
Тот факт, что ограничение существует может означать, что вложенности вызовов хранимых процедур слишком много не очень хорошая вещь. Тем не менее, максимальный уровень кажется мне достаточно большим, чтобы не беспокоиться о том, что вложенные вызовы наподобие 5 или около того уровней.
И действительно, я никогда не слышал, чтобы вложенные вызовы в вашем дизайне вносили какие-либо недостатки, и я не испытывал никакого реального недостатка в вызове хранимых процедур друг от друга. Напротив, я думаю, что факторинг вашего серверного кода позволяет сделать ваш дизайн более гибким. Или, если ничего другого, это по крайней мере позволяет вам сделать код хранимых процедур более управляемым, разделив большие на более умеренные (и, возможно, логически завершенные) единицы.
Я не хочу сказать, что вы всегда должны пытаться повлиять на ваши хранимые процедуры любой ценой, я просто не вижу ничего плохого в том, что вам нужно вложить свои процедуры, если это будет лучше соответствовать вашему дизайну.
Извините, что * * ваша точка? Я просто не уверен. Является ли это вложенными хранимыми процедурами или «почти дублированием» их, что делает вещи беспорядочными? –
@AndriyM - Дело в том, что я думаю, вы должны быть осторожны, чтобы использовать SP для реализации принципа [DRY] (http://en.wikipedia.org/wiki/Don%27t_repeat_yourself). В некоторых случаях, конечно, имеет смысл иметь один SP, который имеет четко определенную задачу, которую можно использовать повторно в других SP, но ... Вложенные SP (на мой взгляд) трудно поддерживать. Забыл ответить на ваш вопрос. И «вложенность», и «почти дублирование» делает вещи беспорядочными. Таким образом, в проекте, в котором я работаю, у нас нет ** (почти) бизнес-правил в DB/SP, все, что не контролируется ограничениями, контролируется в средстве. –
Я вижу сейчас, большое спасибо! Я думаю, что могу согласиться с тем, что поддерживать SP (особенно когда их много) сложнее, чем поддерживать примерно одинаковое количество клиентского кода. Это один из случаев, когда хорошая и своевременная обновленная документация по продукту особенно важна, и тем более, когда не только один человек участвует в поддержании СП. –