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

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

Oracle Insert several rows [D7]


McSimm2 ©   (2003-07-07 09:56:00) 

Как записать в одном запросе несколько строк???


insert into table1 values ("value1","value2");
insert into table1 values ("value3","value4");
....;


Q   (2003-07-07 12:23:00) [1]

если value1, value2 хранятся в полях другой ТБД (напр-р, field1 и field2 соот-но), то можно так

INSERT INTO table1
SELECT field1, field2
FROM OtherTable


Anatoly Podgoretsky   (2003-07-07 12:13:00) [2]

petr_v_a © (07.07.03 12:10)
БДЕ после выхода Д6 не менялась.


petr_v_a   (2003-07-07 12:10:00) [3]

При использовании BDE никак ( по крайней мере в D5, но в том, что в D7 BDE стала только кривее, я уверен на 99%, такова тенденция )
При использовании DOA можно сделать примерно так:


begin
forall i in :mybind.first .. :mybind.last loop
insert into mytable
values ( :mybind(i).field1, и.т.д, :mybind(i).fieldN);
end;


:mybind привязать через TOracleQuery.SetComplexVariable
Очень эффективный способ для вставки большого количества записей, трафик упадет раз в 5


DenK_vrtz   (2003-07-07 11:14:00) [4]

Я бы сделал вьюху, а к ней инстеадофный триггер


DenK_vrtz   (2003-07-07 11:12:00) [5]

DenK_vrtz © (07.07.03 11:08) <-Простите, глупость сказал :-)


DenK_vrtz   (2003-07-07 11:08:00) [6]

Чего то я не понял!? А зачем инсерт делать двумя строчками?


Sandman25   (2003-07-07 11:06:00) [7]

Упс, натормозил.
Вместо
from table2
where 1=0
нужно использовать таблицу с 1 записью, либо писать
Distinct и убрать where.


McSimm2   (2003-07-07 11:05:00) [8]

Я хотел в одном запросе добавить сразу несколько строк


VAleksey   (2003-07-07 11:02:00) [9]

А что имеется в виду вообще? Запрос у тебя не путается с PL/SQL блоком?


Sandman25   (2003-07-07 10:59:00) [10]


Insert into table1
select "value1","value2"
from table2
where 1=0
union all
select "value3","value4"
from table2
where 1=0

Но лучше так не делать, а использовать

with Query do
begin
Sql.Text := "insert into table1 values(:p1,:p2)";
Prepare;
Params[0].AsString := "value1";
Params[1].AsString := "value2";
ExecSql;
Params[0].AsString := "value3";
Params[1].AsString := "value4";
ExecSql;
end


Johnmen   (2003-07-07 10:08:00) [11]

Нет.


Наверх

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