|
|
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Доброго времени суток. Сама ситуация. Имеется некая база данных, и в ней с десяток процедур вида Код: plsql 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. И время от времени приходится одно или несколько условий отключать путем комментирования кода этого условия для запуска процедуры. И настало время, когда надоело это делать руками, и хочется переписать процедуры для облегчения запуска. Варианты видятся такие: - добавить дополнительный параметр для запуска процедуры,в котором идут перечислением номера условий, и каждое условие обернуть в еще один if для проверки с параметром. - подсказали еще вариант через сохранение текста процедур в таблицы, и уже оттуда пытаться собирать процедуру и запускать только с определенными строками(Rinka777). Вопрос состоит в следующем- может быть есть еще какие-то варианты исполнения / решения получше ? Код: plsql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 15:02 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Stebloidподсказали еще вариант через сохранение текста процедур в таблицы, и уже оттуда пытаться собирать процедуру и запускать только с определенными строками(Rinka777).Бред. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 15:04 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Условную компиляцию не предлагать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 15:21 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Stebloid, рефракторинг впритык к предметке, не городя огороды ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 15:36 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Stebloidнадоело это делать рукамиА в чем разница надоелости - руками менять процедуру, руками менять параметр или руками менять данные в таблице? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 16:04 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
andrey_anonymousУсловную компиляцию не предлагать? 9.2.0.6.0 - там еще ее нет, и она все же статическая - т.е. на этапе выполнения не изменить, нужна перекомпиляция. Если нужно в рантайме - можно предложить использовать контексты, хотя это почти то же самое что параметры. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 16:06 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
MazoHistandrey_anonymousУсловную компиляцию не предлагать? 9.2.0.6.0 - там еще ее нет, и она все же статическая Пропустил этот момент. На этой версии или кодогенерация, или параметры. Что до статики - то правка кода тоже как бы статик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 16:21 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Stebloid, В зависимости от количества условий. Если меньше десятка (условно), то параметрами. Если много - завести таблицу с параметрами. IMHO, генерировать код на лету стоит только если без этого совсем уж никак не обойтись. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 16:36 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
rpovarovЕсли меньше десятка (условно), то параметрами.Одна битовая маска. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 16:38 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Благодарю откликнувшихся за ответы :-) ma1tus, Хм… под рефакторингом подразумевается в данном случае вообще выпиливание условий, которые отключаются? Или что-то другое? Педаль ввода, Надоело искать в коде условия и комментировать их, затем обратно включать. Это может длиться до двух часов непрерывно ( выключи этот, включи. Теперь следующие условия). Я себе конечный итог переделки видел без своего участия на отключение условий- если надо что-то отключить, то просто ввели в параметре номера условий и без них процедура отработала. rpovarov, Условий разброс от 100 до ~ 600 штук. Подразумевается двустолбцовая таблица, в которой каждому условию будет соответствовать определеный номер? Elic, Не сталкивался, читаю. Bitand заменяет like по строке для цифр? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 18:31 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
StebloidНе сталкивался, читаю. Bitand заменяет like по строке для цифр?Если смотреть с такой точки зрения, то беспроцентный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 18:39 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Забыл свои маленькие нагрузки: Добро на отключение условий дают 5 человек. Всего пользователей 300. Основной пик нагрузки конец месяца, когда начинается отчетный период. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 18:42 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
AmKad, Ясненько. Выходит, если его использовать, то надо будет сразу оговаривать - ввод номеров условий сплошной строкой без пробелов и запятых ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 18:46 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Stebloid Условий разброс от 100 до ~ 600 штук. Stebloid ввод номеров условий сплошной строкой без пробелов и запятых бедные пользователи, за что вы так с ними? :D ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 18:50 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Табличка с параметрами, к табличке - UIшечка и кнопка "пересчитать", доступ у тех пятерых, кто рулит включением/отключением условий. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.11.2017, 18:57 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Stebloidподразумевается в данном случаеесли каждая из имеющихся процедур выполняет свою производственную задачу с опциями - тогда завести параметры в самих процедурах, если - нет, то все, независящие от других условия, выпилить в отдельные, выполняющие свой минимум, вынося параметры на уровень выше - куда-то в механизм сборки запускаемых комплексов этих процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2017, 04:11 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
StebloidВыходит, если его использовать, то надо будет сразу оговаривать - ввод номеров условий сплошной строкой без пробелов и запятыхКак можно заниматься программированием не понимая, сто такое битовая маска? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2017, 08:20 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
j2k, Так исторрчески сложилось. В строчку смогут ввести свои условия, максимум на отключение не больше 10 условий. andrey_anonymous, Что-то такое и представлял- две версии для запускав меню : стандартная со всеми условиями и на отключение с окном для ввода условий. ma1tus, Идея интресная по разделению процедур на отключаемые условия и нет, но к сожалению,набор условий на отключение не статичен и разный, и я не в состоянии угадать какие будут отключены в следующий раз. Хм…если делать дополнительную процедуру с отключаемыми условиями, то ее пополнять новыми условиями на отключение когда требуется. В каждой из процедур есть 2-3 условия которые чаще других попадаются, их уже быстро нахожу. И только из-за них новую процедуру писать как-то не то. Хотелось как-то комплексно решить этот вопрос без возврата к нему. Elic, Какой-то провакационный вопрос… ограниченно в решениях, наверно так отвечу. Без маски этой, разбирал бы строку через like и что-нибудь городил бы с поиском/проверкой запятой. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2017, 10:29 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Stebloid, прежде чем куевертить свою переделку, ответь на вопросы? 1)код работает правильно? 2)код работает быстро? 3)код не мешает другим процессам? если все три ответа - ДА, то значит, что это чисто твое, субъективное, неприятие чужого стиля и где гарантии, что твои переделки не сломают нах всю систему? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.11.2017, 15:09 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
казинак, Про стиль написания кода пока вопросов нет, хотя там тоже есть над чем поработать. Для меня все выглядит так, что в начале было мало условий и не задумывались о расширении/поддержки кода в будущем. Потом на каком-то этапе развития системы происходит лавинообразный рост числа условий( или в законодательстве изменения, или еще что-то), а как работали через отключение так и продолжили- мы так привыкли уже. Я считаю, что процесс " ввести в форму условия, запустить процедуру, посмотреть результат" будет быстрее чем " позвонить для отключения условия, найти условие, отключить его,скомпилировать процедуру, запустить ее, посмотреть результат, включить условие, снова скомпилировать процедуру". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.11.2017, 10:18 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Почему бы не сделать настроичную таблицу, куда можно положить код условия и флаг его активности? В начале процедуры вычитывать эти данные и использовать в ваших if-ах. При надобности, что бы отключить какое либо из условий, просто убираете флаг активности и не надо ничего перекомпилировать ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 06:35 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Kido, Это очень позоже на вот этот вариант: andrey_anonymousТабличка с параметрами, к табличке - UIшечка и кнопка "пересчитать", доступ у тех пятерых, кто рулит включением/отключением условий. Спасибо всем откликнувшимся за варианты! Значит, на этой версии Oracle не так уж и много решений этого вопроса. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 09:47 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Stebloid Условий разброс от 100 до ~ 600 штук. Подразумевается двустолбцовая таблица, в которой каждому условию будет соответствовать определеный номер? 1. профиль/template 2. номер/название/id условия 3. переключатель условия Столбец "профиль" нужен, чтобы постоянно не редактировать таблицу, а наполнить сразу часто используемыми комбинациями, и запускать процедуру только с названием профиля. Можно добавить столбцы valid_from и valid_to, чтобы у условия было ещё и время действия (если нужно). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.11.2017, 18:52 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
StebloidВопрос состоит в следующем- может быть есть еще какие-то варианты исполнения / решения получше ? Пересмотреть причины по которым выбрана такая архитектура решения - не предлагать? Сходу предположу, что это "уни кальность кода" и тому подобные абстракции, которые хорошо смотрятся на уровне ООП, но бредово реализуются на уровне РСУБД. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.11.2017, 09:19 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
rpovarov, Спасибо за уточнение. =) env, Скорей всего, это так исторически сложилось , а также требования законодательства к отдельным этапам ввода и сопровождения информации. Какой-либо уникальности, думаю нет.Структура в общих чертах такая : Есть бумажные документы, есть их электронная форма в браузере на Oracle Forms, заполняемая сотрудниками в регионах. Часть критически важных/основных полей проверяется при заполнении сразу на форме. Остальные требования к заполнению проверяются уже после commit`a в промежуточную таблицу запуском процедуры. И она же выдает результат в духе "поле 1 неправильно заполнено". И если нет ни каких ошибок, то данные начинают видеть в центральном офисе. Там ждут уже бумажный документ для сверки набитых данных и бумаги. И тут уже возникают моменты с отключением условий (старые документы, для которых уже не подходят требования законодательства, но данные нужны или просто какие-либо хотелки), что бы данные попали уже непосредственно в "боевую базу". Соответственно, время от времени вносятся изменения как в бумажный документ, так и в электронную форму, и в процедуры, и в таблицы и т.д. Этот процесс идет где-то с 2005г. Я еще не представляю как можно это по другому реализовать. Поэтому, пока, решил взяться за кусок, который больше понимаю и смогу облегчить, как для себя, так, и может для будущих работников- разобраться с условиями и процедурами. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.11.2017, 15:05 |
|
||
|
Переписать процедуру
|
|||
|---|---|---|---|
|
#18+
Это следовало бы реализовать как систему правил. Каждое правило имеет критерии применимости - вид(ы) документа(ов), период действия правила (по дате документа или по астрономическому времени) и т.д. С правилом ассоциирован метод проверки и диагностические сообщения (отдельно от кода - это упрощает локализацию). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.11.2017, 12:03 |
|
||
|
|

start [/forum/topic.php?all=1&fid=52&tid=1884905]: |
0ms |
get settings: |
5ms |
get forum list: |
9ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
139ms |
get topic data: |
6ms |
get forum data: |
2ms |
get page messages: |
37ms |
get tp. blocked users: |
1ms |
| others: | 205ms |
| total: | 408ms |

| 0 / 0 |
