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

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

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

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

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

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

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

--
LET`S ROCK!
...
Рейтинг: 0 / 0
Как в ХП передать имя таблицы в виде параметра?
    #32565983
doroshka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
В этом случае можно поизвращаться с триггерами, которые будут при вставке в одну из 10 табличек теже самые данные вставлять и в одиннацатую - общую... Хотя тут еще не ясно где больший изврат :))
...
Рейтинг: 0 / 0
Как в ХП передать имя таблицы в виде параметра?
    #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
Как в ХП передать имя таблицы в виде параметра?
    #32566826
Scream
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
2"doroshka"

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

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


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