Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как подставить значение поля в sql-запрос [IB6.x]


bos ©   (2002-04-11 17:23:00) 

Есть таблица, в которой одно из полей (TABLENAME) тип varchar содежит названия других таблиц;
как в запросе получив значение TABLENAME, пусть это будет "table1", получить данные из таблицы table1?
все крутится на Interbase 6


kaif   (2002-04-16 13:23:00) [1]

Правильный ответ только у Deniz © (12.04.02 06:10).
В IB макроподстановка имени таблицы в запрос в хранимой процедуре не допускается. На клиенте - без проблем.


roottim   (2002-04-12 08:35:00) [2]

хоть ХП, хоть на клиенте.. всеравно запрос будет составлен динамически на основе другого!
лучший вариант конечно Johnmen © (11.04.02 17:29)


Deniz   (2002-04-12 06:10:00) [3]

На клиенте без проблем

Query1.SQL.Clear;
Query1.SQL.Add("select * from "+TableName);
Query1.Open;

В хранимой процедуре такое не пойдет. Если заранее известен список таблиц, то путем перебора:

Create procedure ProcName(TableName varchar(25))
returns (...)
as begin
if (:TableName = "Table1") then
select * from Table1 into ...;
if (:TableName = "Table2") then
select * from Table2 into ...;
if (:TableName = "Table3") then
select * from Table3 into ...;
...
suspend;
end;

А если список таблиц не известен, то увы...


kaif   (2002-04-11 21:25:00) [4]

>Леха_ (11.04.02 18:08)
>В хранимой процедуре без проблем

Да?????????
А как конкретно?


Леха_   (2002-04-11 18:08:00) [5]

В хранимой процедуре без проблем


bos   (2002-04-11 18:01:00) [6]

:(
А в хранимой процедуре?


Johnmen   (2002-04-11 17:29:00) [7]

Только несколькими запросами.
Первый вытаскивает названия таблиц, остальные формируются динамически, и только так !


Наверх

Титульная страница Поиск, карта сайта Написать письмо