![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Обработка информации по типу удаленных процедур [D5, D6, D7, IB6.x]
sunrider © (2003-05-28 00:04:00)Привет всем. Мастера поделитесь мнением : Есть необходимость
использовать процедуру на сервере с конструкцией типа
for select ....
where <параметры выбора>
into :<переменные>
do begin
insert into table_name(...) values(...)
end
Вся проблема в том, что число параметров для where величина переменная. Как все это реализовать на стороне клиента понятно,
но не интересно :-) и конечно медленее, чем на сервере.
Не охота так же создавать процедуру на ходу, а потом ее удалять.
Может есть у кого идеи? Заранее благодарю
sunrider (2003-05-28 14:40:00) [1]Спасибо мужики подсказали идею . Попробую оба варианта.
Zacho (2003-05-28 13:09:00) [2]
> sunrider (28.05.03 10:42)
Если первичный ключ формируется генератором, то можно INSERT INTO ... SELECT (GEN_ID(MY_GEN,1), ...) FROM ... WHERE ..
AlexSerp (2003-05-28 11:25:00) [3]Да, забыл.
Там, естественно, можно и комбинации заполненности параметров применять.
AlexSerp (2003-05-28 11:24:00) [4]Определи в процедуре максимум нужных тебе параметров.
И делай в ней разбор на заполненность параметров.
if PARAM1 is not null then begin
for select ...
do suspend;
end
if PARAM2 is not null then begin
for select ...
do suspend;
end
if PARAM3 is not null then begin
for select ...
do suspend;
end
Sandman25 (2003-05-28 11:01:00) [5]>но есть пару значений первичного ключа, которые нужно задавать.
Можно написать INSERT INTO table1 SELECT para_znacenii1, para_znacenii2, table2.field1, table2.field2 FROM table2
sunrider (2003-05-28 10:42:00) [6]У меня база на dialect 1 не совсем желательно переходить на диалект 3. Про то что ты написал - думал конечно, но есть пару значений первичного ключа, которые нужно задавать. По этому
придеться использовать именно - insert into table_name(...) values(...). Или UDF писать, что ли.
Zacho (2003-05-28 00:17:00) [7]1. А сделать запрос типа INSERT INTO ... SELECT ... WHERE ... вместо хранимой процедуры и динамически формировать его не клиенте никак ?
> и конечно медленее, чем на сервере
А проверь :-) Сомневаюсь, что сильно медленнее.
2. Смотри в сторону FB 1.5 и EXECUTE STATEMENT