query1.sql.add('update a set bb=''aa''';'select * from a ');
oracle是 begin insert into table1 values (...) ; insert ... ; ... end;sybase和sql server可以简单的将多条insert 语句加到Query的SQL中(只要换行)执行就可以。
可以写一个存储过程 create proc '存储过程名' 参数1, 参数2, .......... as BEGIN TRANSACTION '事物名' insert into '表1'............ insert into '表2'............ commit TRANSACTION '事物名'
用Tstoredproc调用, 存储过程在sql里写create proc '存储过程名' @参数1, @参数2, .......... as insert into '表1'............ insert into '表1'............
无论怎么写,总是有几条sql,就执行几次,他们的解决方法怕都解决不了你的需求,你考虑insert一句插入多条,如:insert into ***(select * from ...)
问题是 我根本就没有 表可以 select只有一个文本文件向空表中导入
那你就别一次提交了, 你作个循环不就结了 var s:tstringlist; i:integer; begin s:=tstringlist.create; s.loadfromfile(... for i:=0 to s.count-1 do query.insertrecord([... end;
这个问题简单,例如:With Query1 do begin Close; SQL.Clear; SQL.Add('Insert '... 语句一); SQL.Add('Insert '... 语句二); SQL.Add('Insert '... 语句三); ...... ExecSQL; end;
begin
insert into table1 values (...) ;
insert ... ;
...
end;sybase和sql server可以简单的将多条insert 语句加到Query的SQL中(只要换行)执行就可以。
create proc '存储过程名'
参数1,
参数2,
..........
as
BEGIN TRANSACTION '事物名'
insert into '表1'............
insert into '表2'............
commit TRANSACTION '事物名'
存储过程在sql里写create proc '存储过程名'
@参数1,
@参数2,
..........
as
insert into '表1'............
insert into '表1'............
你作个循环不就结了
var
s:tstringlist;
i:integer;
begin
s:=tstringlist.create;
s.loadfromfile(...
for i:=0 to s.count-1 do
query.insertrecord([...
end;
begin
Close;
SQL.Clear;
SQL.Add('Insert '... 语句一);
SQL.Add('Insert '... 语句二);
SQL.Add('Insert '... 语句三);
......
ExecSQL;
end;
adoconnection1.begintrans;
try
adoconnection1.execute sql1;
adoconnection1.execute sql2;
adoconnection1.execute sql2;
adoconnection1.execute sql4;
adoconnection1.committrans;
except
adoconnection1.rollbacktrans;
end;
如果确实要用adoquery一次执行多个,可以试试这个:
adoquery1.close;
adoquery1.sql.clear;
adoquery1.sql.add('exec ');
adoquery1.sql.add(sql1 + ' ');
adoquery1.sql.add(sql2 + ' ');
adoquery1.sql.add(sql3 + ' ');
adoquery1.execsql;