|
|
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
Есть 10 одинаковых таблиц, отличающихся только названиями. Надо написать одну ХП для них всех. Как написать такой скрипт: Код: plaintext Подскажите, плз, как? -- LET`S ROCK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 17:23:22 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
А версия - то - какая? Пример для FB 1.5: create or alter procedure x ( Table_Name varchar(32)) ) returns ( Id decimal(18,0)) as begin For execute statement 'select ' || id || ' from '||table_name into :id do suspend; end ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 17:29:50 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
Версия FB 1.5 Спасибо!! Попробую... -- LET`S ROCK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 17:52:29 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
Заработало!! Спасибо, "nik_x"! -- LET`S ROCK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 17:58:14 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
Если execute statement по каким-то причинам не подходит (интересно, какие издержки у сервера на выполнение этой команды? В Release Notes, кажись, рекомендовали не слишком увлекаться этой конструкцией... Или я чё-то путаю? У кого под рукой дока - поправьте меня.), то можно свалить все 10 табличек в одну, и добавить поле в которм будет находиться идентификатор того из какой таблицы эти данные. А дальше - все просто. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 16.06.2004, 18:16:06 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
doroshka... то можно свалить все 10 табличек в одну, и добавить поле в которм будет находиться идентификатор того из какой таблицы эти данные. А дальше - все просто. Поддерживаю. ИМХО - это самый правильный путь в данной ситуации, а уж никак не извращения с динамическим сиквелом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 08:43:54 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
А чем вам не нравиться динамический сиквел? Есть причины? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 11:19:03 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
Тем, что он динамический. Каждый раз выполняется парсинг и компиляция получившегося предложения (учти - без гарантии успешного завершения - может, ты несуществующую таблицу укажешь, например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 11:32:57 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
Dik76А чем вам не нравиться динамический сиквел? Есть причины? Скорее мне в данном случае не нравится "Есть 10 одинаковых таблиц, отличающихся только названиями". Против ДС вообще ничего не имею, но считаю его крайней мерой, когда без него ну совсем никак. Ибо условия, где он применяется тоже могут динамически меняться (возникнет 11-я таблица с другой логикой или изменится логика у 7-ой например). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 11:35:28 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
doroshka... то можно свалить все 10 табличек в одну, и добавить поле в которм будет находиться идентификатор того из какой таблицы эти данные. А дальше - все просто Нельзя свалить все таблички в одну :( По единственной причине - формат базы привязан к конкретному аппарату. Первое, что я сделал, когда ко мне попала эта база - решил соединить все одинаковые таблицы в одну. И был жестоко наказан этим самым аппаратом :( Потерял пару дней. И вернулся к тому, с чего начинал. Так что остаются только извращения... -- LET`S ROCK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 17:11:30 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
В этом случае можно поизвращаться с триггерами, которые будут при вставке в одну из 10 табличек теже самые данные вставлять и в одиннацатую - общую... Хотя тут еще не ясно где больший изврат :)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 17:47:23 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
А если таблиц этих фиксированное количество (10), то я бы делал в процедуре 10 конструкций вида: Код: plaintext 1. 2. 3. 4. Кстати, вот что написано в Release Notes по поводу EXECUTE STATEMENT Release Notes v1.08This feature is intended only for very cautious use and should be used with all factors taken into account. It should be a rule of thumb to use EXECUTE STATEMENT only when other methods are impossible, or perform even worse than EXECUTE STATEMENT. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 17.06.2004, 18:16:01 |
|
||
|
Как в ХП передать имя таблицы в виде параметра?
|
|||
|---|---|---|---|
|
#18+
2"doroshka" В каждой конкретной прошивке устройства количество таких одинаковых таблиц постоянно. Но прошивки меняются раз в полгода. Так что ХП предложенного тобой вида, похоже, не подойдет. Да и не особо нужно. Количество строк в каждой из таблиц не переваливает за 500. Так что проблем со скоростью не предвидится. -- LET`S ROCK! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.06.2004, 11:49:31 |
|
||
|
|

start [/forum/topic.php?fid=40&fpage=466&tid=1578413]: |
0ms |
get settings: |
11ms |
get forum list: |
20ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
60ms |
get topic data: |
10ms |
get forum data: |
3ms |
get page messages: |
65ms |
get tp. blocked users: |
1ms |
| others: | 234ms |
| total: | 410ms |

| 0 / 0 |
