Я хотел бы поблагодарить моих счастливых звезд за то, что в SQL Server нет пакетов. Пакеты Oracle отстой.
Хм, нам нужен способ, чтобы взять все эти процедуры и поместить их в одно место. Я знаю! Давайте заставим разработчиков создавать и поддерживать два файла для каждого пакета. Они будут любить нас вечно!
Пока MS никогда не реализует пакеты, как Oracle, это будет победой в моей книге.
РЕДАКТИРОВАТЬ для комментаторов:
Пакеты Oracle - это просто способ упорядочить ваши хранимые процедуры, в том числе пакеты, чтобы у вас не было 100 хранимых процедур, а может быть 5 пакетов. Они не могут наращиваться как пакеты в коде Java или C #. Все пакеты находятся на одном уровне.
Пакету требуется два файла: файл заголовков и файл тела. Это создает разочарование при добавлении новых процедур в существующий пакет, поскольку вы не можете добавить тело без добавления заголовка, даже если оно содержит ту же информацию, что и в теле.
Например, вот фрагмент из файла заголовка одного из моих пакетов:
PROCEDURE bulk_approve_events
(
i_last_updated_by IN VARCHAR2,
o_event OUT NUMBER
);
А вот соответствующая процедура в теле:
PROCEDURE bulk_approve_events
(
i_last_updated_by IN VARCHAR2,
o_event OUT NUMBER
) IS
...
BEGIN
...
END;
Без разницы. Заголовочный файл бесполезен и является просто еще одним препятствием для разработчика, когда он переходит при разработке пакетов. В моем проекте есть соглашение, согласно которому вся прокомментированная документация для каждой процедуры помещается в заголовок вместе с подробной информацией о том, когда и кем она была добавлена, но это также можно легко включить в тело.