![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как подставить значение поля в 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]Только несколькими запросами.
Первый вытаскивает названия таблиц, остальные формируются динамически, и только так !