Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
Предыдущий месаг - на "На самом деле мы сейчас уже между собой разговариваем..." ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 13:24 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
>Т.е. действие "ИИИИ" у меня там делают проги "амвап", "енкеут" и еще как то. Действие ИИИ выполняется ВСЕМИ ОДИНАКОВО: exec db_oper..sp_DoAction 'ИИИ', 'db_Takaya_to' DoAction может работать по разному: либо "клеить" имя нужной СП из кусков, либо обращаться в соотв. таблицу. И никаких ифов и кейсов. И вообще, ребята, почитайте нормальную книжку по ООП. Я к сожаелнию не помню сейчас названия и автора, но есть такой буук, в котором ни слова о языках, процедурах, и других подробностях. Там одни принципы. Их стоит соблюдать. Даже если придется еще дописать пару строчек кода. В итоге - дешевле обойдется. Мне кажется мы общаемся на "разных уровнях абстракции" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 13:43 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
>Мне кажется мы общаемся на "разных уровнях абстракции" Ааа вон Вы о чем Ну тогда автора вопроса нужно отсылать к Garya, он большой спец по надстройкам по типу ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 14:03 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
А причем тут ООП. Там классы, а тут я от процедур не наследуюсь. Мало того, даже по этому меиоду, получается, что вместо того, чтобы просто вызвать процедуру и сказать, я база такая-то (exec sp_DoReport @DBName = 'Baza1',....), я должен кудато сначала обратиться, сказать, я база такая, а потом уже тот кто-то обратится к процедуре и ! все равно скажет я база такая. Спрашивается, зачем лишняя прокладка. Т.е. вместо того, чтобы 95% процедур вызывать обычно, а 5% "как-то по-другому", я буду вызывать все процедуры "как-то по-другому"? Или только для 5% делать специальную надстройку? >Действие ИИИ выполняется ВСЕМИ ОДИНАКОВО: exec db_oper..sp_DoAction 'ИИИ', 'db_Takaya_to' А почему просто не вызвать: exec sp_ИИИ "db_Takaya_to" >DoAction может работать по разному: либо "клеить" имя нужной СП из кусков, либо обращаться в соотв. таблицу. И >никаких ифов и кейсов. 1) А это как из кусков. 2) А писать эти процедуры будет не "DoAction", а Programmer, кторому без "линка очень тяжело джоиниться глазами к базе", чтобы отыскать нужную процедуру для действия14 базы 3. Потому как имя неизвестно. Хотя возможно что такой подход и пошел бы, но не в данном случае, и если бы у нас нестандартно обрабатывалось 90% процедур. А вообще, пора дожидаться спящего ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 14:04 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
Вот чего я не понял, так почему все крутится только вокруг хранимых процедур? Мы уже выяснили, что на разных фирмах нечто может изменяться (условия хозяйствования), что может привести к изменениюю логики работы. А только ли логики, неужто со структурой данных ничего не происходит? Вот все фирмы печатали в счетах-фактурах страна происхождения "Россия" и номер ГТД - прочерк, поскольку они работают с российским товаром. Эта информация просто вшита в шаблон отчета, и ни в каких таблицах не хранится. А потом вдруг поднадобилось работать с импортным товаром. Дык ведь в таблицы нужно колонки добавить, иже с ними новые таблицы - справочник стран и ГТД! Отредактировать триггеры, хранимые процедуры, VIEW, Foregn keys и т.д. и т.п... Что-то я не понял, что это за однобокая модернизация только на хранимых процедурах. И еще вот что я не понял. Есть две схемы работы - одна централизованная, вторая децентрализованная. IMHO автор вопроса все свалил в одну кучу. Либо в структуру данных и логику работы вносятся изменения централизованно, причем одинаковые для всех участников процесса. Либо каждый участник процесса живет сам по себе, сам вносит изменения какие захочет. А когда децентрализованно создаются новые версии хранимых процедур, но централизованно производится их запуск - это вообще на анекдот похоже. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 14:17 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
Так я уже и говорю, что мы про разное говорим. И, собственно, ждем ответа на это все автора вопроса, чего же ему нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2001, 15:31 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 05:54 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
Ну вот я и проснулся Всем ответившим большое спасибо, я и не ожидал за столь короткий промежутко времени столько конструктивных предложений, сколько небыло за последние недели Несколько уточнений сразу, чтоб по этсй ветки не велось обсуждение (пока): -- Меня интересуют только отчеты и в бизнес-логику мы пока не лезим, это вообще дремучий лес который будет переписываться позже (и давайте вообще забудем об этом пока, я для себя более простые вопросы решить не могу ) По поводу написание "универсального запускальщика процедур" идея очень хороша, нужно только примерить к моей задаче и унифицировать интерфейс вызова, может что и получиться. Но все же от оригинального вопроса после уточнения всех тонкостей мы немного отошли (может потому, что очень простой вопрос на первый взгляд?). Изменяю условие задачи: - если N БД для которых надо написать M ОДИНАКОВЫХ ОТЧЕТОВ (забудем о различных отчетах, различия сейчас не принципиальны). - пишут несколько программистов. Мною предлогалось создать дополнительную БД с набором ХП которым передается имя БД для которой эта процедура выполняется. Можно это сделать следующими методами: 1. Использовать SP_ExecuteSQL или Execute. 2. Использовать локальные курсоры (в начале каждой процедуры, анализируем какая БД создаем локальный курсор и дальше его юзаем) 3. Использовать View'ы. 4. Используем USE <БД> (по моему идеальное решение моей задачи, но USE к сожалению в SP использовать низя-я-я-я ). ЗАДАЧИ: 1. Какие еще есть способы решения данной проблемы ? 2. Какой решение ОПТИМАЛЬНОЕ и почему ? С уважением, Михаил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 13:55 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
Есть ненормальная мысль: скрестить метод, предлагаемый мной и Garya с методом cube и получить вот что и почему: хранимые процедуры лежат в каждой БД написать интерфейс, который будет информировать лично программера о том, какие процедуры где лежат и чем отличаются или не отличаются, типа: процедура sp_Report1 БД 1,2,3.. - значит для всех одинаковая процедура sp_Report2 БД 1,2 процедура sp_Report2 БД 3 - сие значит, что процедура для БД 1,2 одинаковая, для БД 3 немного другая (но делает эта процедура во всех БД одно и то же по сути действие) и т.д. Когда процедуру изменяем, знаем, куда ее надо скомпилять или переписать или еще как - во все БД, или только в какие-то. Почему все же я придерживаюсь мнения, что процедуры нужно держать для каждой БД отдельно: 1. простота использования самого вызова процедуры - из какой БД не вызови, знаешь, ЧТО вызывается. Не нужно писать ни каких дополнительных вызовов чего-то еще 2. простота работы внутри процедуры (самое главное) - и так отчет не просто делать, а если к этому еще прилепить вызов всего через EXEC или вытягивать курсоры а потом с ними работать - это дополнительно много мороки, да и в тексте процедуры черт ногу сломит потом. Про view и др. я уж не говорю. 3. когда хочу, тогда меняю процедуру для любой БД не глядя на последствия - все равно она вызывается только для этой конкретной БД И если все же все процедуры одинаковые, неужели труднее их перекопировать для всех БД, чем через левое ухо правой пяткой наворачивать кучу ненужного кода. Вот для администрирования - это да, права раздавать, то, се, там если много процедур, придется их учитывать. А тут, по-моему, проблемы нет. Самый оптимальный и неработающий после обычного способа - это Use. А сколько, если не секрет, таких одинаковых процедур. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 14:31 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
1. Настраиваешь репликацию всех таблиц таким образом, чтобы в одной какой-либо базе данных были данные со всех остальных баз данных. 2. На всех базах данных подвешиваешь JOB, который будет отслеживать по совокупности таблиц SYSOBJECTS & SYSCOMMENTS появление новых хранимых процедур или новых редакций старых хранимых процедур. Этот джоб должен переписать текст хранимой процедуры из SYSCOMMENTS в пользовательскую таблицу "специального назначения", данные которой реплицируются так же, как и всех прочих таблиц. В эту же таблицу автоматом подставляемтся имя базы данных, в которой она находится. 3 В центральной БД запускаешь еще один JOB, который выявляет новые хранимые процедуры в твоей "спецтаблице" и повторяет скрипт создания хранимых процедур, только вместо исходного имени хранимой процедуры автоматом формирует составное имя - имя базы данных+имя хранимой процедуры. Так обеспечивается уникальность. Вот в этой-то базе данных все хранимые процедуры и запускаешь. Никаких USE и прочих вычислений, что где производилось и что где запускается. Запускается всегда в одном месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 17:52 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
М.б. я где-то проглядел ... Почему нельзя собрать все процедуры (всё-таки производительность) в одной базе и для каждой "подбазы" написать IF? Clipboard вроде работал... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 19:31 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
2 All Может я конечно ничего не понимаю, но как я думаю смысл создания реляционных БД и был именно в том, что бы отделить данные от их использования, хотите ООП надстройку, может тогда лучше посмотреть в сторону ОО БД? И не изобретать велосипед? Не хочется переписывать процедуры отчетов для разных баз? Может тогда лучше придумать СОМ или CORBA? Ну мало ли что эти технологии уже есть, нам ведь нужно Нда... Свое участие в ветке закрываю, мое мнение наиболее близко к мнению tygra P.S. А то еще что нибудь напутаю в терминах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 19:39 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
Бррр. Я честно пытался всё прочесть... Утром, утром... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.07.2001, 21:09 |
|
||
|
По поводу "А как же тогда" собственно по теме
|
|||
|---|---|---|---|
|
#18+
Присоединяюсь к Genady полностью. А то, глядишь, и до наследования процедур доберемся . А это уже к Oracle. Свое участие частично закрываю. З.Ы. 2 Fompro На счет if и clipboard: ну еще проще то по трем БД процедуру перекопировать. И не мучиться потом с процедурами длиной в метр, а в каком ифе у нас чего и как написано. Но если не лень специально надстройку делать, а еще с репликацией , то флаг вам в руки. Я лично себе работу пытаюся упростить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.07.2001, 06:46 |
|
||
|
|

start [/forum/topic.php?fid=46&msg=32009357&tid=1826201]: |
0ms |
get settings: |
8ms |
get forum list: |
15ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
34ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
51ms |
get tp. blocked users: |
1ms |
| others: | 218ms |
| total: | 344ms |

| 0 / 0 |
