Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в ХП передать имя таблицы в виде параметра? / 14 сообщений из 14, страница 1 из 1
16.06.2004, 17:23:22
    #32564227
Scream
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
Есть 10 одинаковых таблиц, отличающихся только названиями. Надо написать одну ХП для них всех. Как написать такой скрипт:
Код: plaintext
SELECT <fields> from :VarTableName;
То есть надо в SELECT передать имя таблицы как переменную.
Подскажите, плз, как?

--
LET`S ROCK!
...
Рейтинг: 0 / 0
16.06.2004, 17:29:50
    #32564243
nik_x
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
А версия - то - какая?

Пример для 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
...
Рейтинг: 0 / 0
16.06.2004, 17:52:29
    #32564284
Scream
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
Версия FB 1.5

Спасибо!! Попробую...

--
LET`S ROCK!
...
Рейтинг: 0 / 0
16.06.2004, 17:58:14
    #32564301
Scream
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
Заработало!!
Спасибо, "nik_x"!

--
LET`S ROCK!
...
Рейтинг: 0 / 0
16.06.2004, 18:16:06
    #32564333
doroshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
Если execute statement по каким-то причинам не подходит (интересно, какие издержки у сервера на выполнение этой команды? В Release Notes, кажись, рекомендовали не слишком увлекаться этой конструкцией... Или я чё-то путаю? У кого под рукой дока - поправьте меня.), то можно свалить все 10 табличек в одну, и добавить поле в которм будет находиться идентификатор того из какой таблицы эти данные. А дальше - все просто.
...
Рейтинг: 0 / 0
17.06.2004, 08:43:54
    #32564670
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
doroshka... то можно свалить все 10 табличек в одну, и добавить поле в которм будет находиться идентификатор того из какой таблицы эти данные. А дальше - все просто.
Поддерживаю. ИМХО - это самый правильный путь в данной ситуации, а уж никак не извращения с динамическим сиквелом.
...
Рейтинг: 0 / 0
17.06.2004, 11:19:03
    #32564957
Dik76
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
А чем вам не нравиться динамический сиквел? Есть причины?
...
Рейтинг: 0 / 0
17.06.2004, 11:32:57
    #32564987
mv
mv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
Тем, что он динамический. Каждый раз выполняется парсинг и компиляция получившегося предложения (учти - без гарантии успешного завершения - может, ты несуществующую таблицу укажешь, например).
...
Рейтинг: 0 / 0
17.06.2004, 11:35:28
    #32564995
Серега
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
Dik76А чем вам не нравиться динамический сиквел? Есть причины?
Скорее мне в данном случае не нравится "Есть 10 одинаковых таблиц, отличающихся только названиями". Против ДС вообще ничего не имею, но считаю его крайней мерой, когда без него ну совсем никак. Ибо условия, где он применяется тоже могут динамически меняться (возникнет 11-я таблица с другой логикой или изменится логика у 7-ой например).
...
Рейтинг: 0 / 0
17.06.2004, 17:11:30
    #32565893
Scream
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
doroshka... то можно свалить все 10 табличек в одну, и добавить поле в которм будет находиться идентификатор того из какой таблицы эти данные. А дальше - все просто

Нельзя свалить все таблички в одну :( По единственной причине - формат базы привязан к конкретному аппарату.
Первое, что я сделал, когда ко мне попала эта база - решил соединить все одинаковые таблицы в одну. И был жестоко наказан этим самым аппаратом :( Потерял пару дней. И вернулся к тому, с чего начинал.

Так что остаются только извращения...

--
LET`S ROCK!
...
Рейтинг: 0 / 0
17.06.2004, 17:47:23
    #32565983
doroshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
В этом случае можно поизвращаться с триггерами, которые будут при вставке в одну из 10 табличек теже самые данные вставлять и в одиннацатую - общую... Хотя тут еще не ясно где больший изврат :))
...
Рейтинг: 0 / 0
17.06.2004, 18:16:01
    #32566068
doroshka
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
А если таблиц этих фиксированное количество (10), то я бы делал в процедуре 10 конструкций вида:
Код: plaintext
1.
2.
3.
4.
if (VarTableName = 'aaa') then begin
  select <fields> from aaa into ...
   ...
end

Кстати, вот что написано в 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.
...
Рейтинг: 0 / 0
18.06.2004, 11:49:31
    #32566826
Scream
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
2"doroshka"

В каждой конкретной прошивке устройства количество таких одинаковых таблиц постоянно. Но прошивки меняются раз в полгода. Так что ХП предложенного тобой вида, похоже, не подойдет.
Да и не особо нужно. Количество строк в каждой из таблиц не переваливает за 500. Так что проблем со скоростью не предвидится.

--
LET`S ROCK!
...
Рейтинг: 0 / 0
18.06.2004, 16:43:32
    #32567848
Злобастый
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Как в ХП передать имя таблицы в виде параметра?
авторКоличество строк в каждой из таблиц не переваливает за 500
Имхо, при 10 таких таблицах, это уже диагноз...
...
Рейтинг: 0 / 0
Форумы / Firebird, InterBase [игнор отключен] [закрыт для гостей] / Как в ХП передать имя таблицы в виде параметра? / 14 сообщений из 14, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]