Изменения версии для Хранимых процедур

Это - другое использование для Эллипсиса, который не имеет никакого отношения к частям: Я часто использую его в связи внутрипотока с очередями как метка, которая сигнализирует "Сделанный"; это там, это - объект, это - одиночный элемент и его отсутствие "средств имени", и это не злоупотребивший Ни один (который мог быть помещен в очередь как часть нормального потока данных). YMMV.

8
задан Joel Coehoorn 14 August 2009 в 15:12
поделиться

7 ответов

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

За свою карьеру я видел много плохого кода и испорченных систем, но ничто не разбивает мои надежды на то, что проект можно спасти, как если бы я видел GetItemFromLots_2_Temp_2 в списке хранимых процедур. Множественные методы намного красивее и проще в обслуживании, чем множественные хранимые процедуры.

(Для тех, кто любит хранимые процедуры. Я не говорю, что они плохие. Я »

5
ответ дан 5 December 2019 в 19:01
поделиться

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

Когда старая логика больше не нужна, вы можете просто удалить ее из sProcs

2
ответ дан 5 December 2019 в 19:01
поделиться

Я бы не стал создавать два разных файла, это точно.

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

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

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

1
ответ дан 5 December 2019 в 19:01
поделиться

Я бы предложил второй вариант, который вы предоставили. Используйте параметр версии. Это то, что делают веб-службы, чтобы они не нарушали код приложений, которые начали использовать API давно, но API в какой-то момент обновляется.

Бьюсь об заклад, есть некоторая одинаковая логика между двумя версии, которые вы могли бы абстрагировать в нижней части процедуры или что-то в этом роде. Или, возможно, создайте функции для общих элементов и вызовите эти функции в ваших больших блоках IF / SWTICH.

1
ответ дан 5 December 2019 в 19:01
поделиться

Раньше мы широко использовали хранимые процедуры в моей компании, но в последнее время (в основном) перешли от них к ORM.

Мы все еще используем их, и наше управление версиями такое же как это было раньше: каждый раз, когда мы изменяем оставшиеся хранимые процедуры (на что имеют право лишь немногие люди), мы сохраняем SQL и сохраняем файл .sql в нашем контроле версий.

Он несовершенен, и мы теряют большую часть интеграции между системой управления версиями и нашими файлами кода (поскольку нет интеграции SQL-сервера с TFS), но это лучше, чем полное отсутствие системы управления версиями.

РЕДАКТИРОВАТЬ - и, конечно, это работает, только если вы больше не нужно использовать старую версию сохраненной процедуры, поскольку она больше не будет существовать в работающей форме.

0
ответ дан 5 December 2019 в 19:01
поделиться

Еще один интересный подход - хранить весь код ваших хранимых процедур в таблице базы данных вместе с версией кода. Затем у вас есть «внешний процесс», который обрабатывает запросы, а затем, в зависимости от версии, динамически создает процесс и выполняет его. После этого процесс может быть прерван.

Обычное предложение, но оно может сработать для вас.

0
ответ дан 5 December 2019 в 19:01
поделиться

Я бы выбрал вариант с двумя файлами по следующим двум причинам:

  • Подпись, то есть количество параметров, которое может изменяться между версиями
  • Каждая хранимая процедура будет проще, следовательно, меньше вероятность ошибок из-за всего условного кода
0
ответ дан 5 December 2019 в 19:01
поделиться
Другие вопросы по тегам:

Похожие вопросы: