infopower控件组中有一次提交多个sql的组件。

解决方案 »

  1.   

    query1.sql.add('update a set bb=''aa''';'select * from a ');
      

  2.   

    oracle是
    begin
      insert into table1 values (...) ;
      insert ... ;
      ...
    end;sybase和sql server可以简单的将多条insert 语句加到Query的SQL中(只要换行)执行就可以。
      

  3.   

    可以写一个存储过程
    create proc '存储过程名'
     参数1,
     参数2,
     ..........
    as
     BEGIN TRANSACTION '事物名'
     insert into '表1'............
     insert into '表2'............
     commit TRANSACTION '事物名'
      

  4.   

    用Tstoredproc调用,
    存储过程在sql里写create proc '存储过程名'
     @参数1,
     @参数2,
     ..........
    as
     insert into '表1'............
     insert into '表1'............
      

  5.   

    无论怎么写,总是有几条sql,就执行几次,他们的解决方法怕都解决不了你的需求,你考虑insert一句插入多条,如:insert into ***(select * from ...)
      

  6.   

    问题是 我根本就没有 表可以 select只有一个文本文件向空表中导入
      

  7.   

    那你就别一次提交了,
    你作个循环不就结了
    var
    s:tstringlist;
    i:integer;
    begin
     s:=tstringlist.create;
     s.loadfromfile(...
     for i:=0 to s.count-1 do
       query.insertrecord([...
    end;
      

  8.   

    这个问题简单,例如:With Query1 do 
    begin
         Close;
         SQL.Clear;
         SQL.Add('Insert '... 语句一);
         SQL.Add('Insert '... 语句二);
         SQL.Add('Insert '... 语句三);
         ......
         ExecSQL;
    end;
      

  9.   

    你用事务处理就可以成批提交啊:
    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;
      

  10.   

    ado 能一次执行多个查询吗?