У меня чуть меньше 200 в коммерческом продукте SQL Server 2005, который, вероятно, увеличится примерно на 10-20 в течение нескольких следующих дней для некоторых новых отчетов.
По возможности я пишу «подпрограммы», так что в любое время, когда я нахожу, что я помещаю 3 или 4 идентичных утверждения вместе более чем в пару sprocs, пришло время превратить эти несколько операторов в подпрограмму, если вы увидите, что я имею в виду.
Я не склонен использовать sprocs для выполнения всей бизнес-логики как таковой, я просто предпочитаю, чтобы sprocs делали что-либо, что можно было бы рассматривать как «транзакционное», поэтому где, как мой код клиента (в Delphi, но что угодно) может сделать нечетную вставку или само обновление, как только что-то требует, чтобы несколько вещей были обновлены или вставлены «сразу», пришло время для sproc.
У меня есть простое, грубое соглашение об именовании для оказания помощи в читаемости (и в обслуживании!)
кодового названия для данного изделия «Рейчли», поэтому у нас есть
RP_whatever - these are general sprocs that update/insert data,
- or return small result sets
RXP_whatever - these are subroutine sprocs that server as 'functions'
- or workers to the RP_ type procs
REP_whatever - these are sprocs that simply act as glorified views almost
- they don't alter data, they return potentially complex result sets
- for reporting purposes, etc
XX_whatever - these are internal test/development/maintenance sprocs
- that the client application (or the local dba) would not normally use
называние произвольно , это просто поможет отличить от префикса sp_, который использует SQL Server.
Я думаю, если бы у меня было 400-500 sprocs в базе данных, я мог бы заинтересоваться, но несколько сотен - это не проблема вообще, если у вас есть система для определения того, какой вид деятельности каждый sproc ответственный за. Я бы предпочел превзойти изменения схемы в нескольких сотнях sprocs (где инструменты SQL Server могут помочь вам найти зависимости и т. Д.), Чем пытаться превзойти изменения схемы на моем языке программирования на высоком уровне.
Полностью согласен - обслуживание тысяч SPs становится громоздким, когда происходят изменения схемы. – stephbu 2008-09-25 20:12:22
Во второй раз, эта мысль, я бы не хотел, чтобы основные тысячи процедур магазина. – 2008-09-25 20:12:55
Не существует ли риск оказаться в узлах бизнес-логики в ваших хранимых процедурах или сложно поддерживать код «спагетти», если у вас есть несколько многоцелевых sprocs? Целевые хранимые процедуры, которые выполняют только одну задачу, намного легче поддерживать. – Rob 2008-09-25 20:13:36