SQL语句如下:
insert into A1 select * from A2
set identity_insert B1 on 
insert into B1 select * from B2
set identity_insert B1 off
其中,A1和B1、A2和B2构成主从表,这个SQL放在ADOCommand里不行,我给它做成存储过程也报错,在查询分析器里可以执行,那我想执行这个SQL应该怎么做?

解决方案 »

  1.   

    我试了一下,也只有用ADOquery了,语法如下:
    begin
    .......
    self.adoquery.close;
    self.adoquery.sql.clear;
    self.adoquery.sql.add('insert into A1 select * from A2 set indenity_insert b1 on');
    self.adoquery.sql.add('insert into B1 select * from B2 set indentity_insert B1 off');
    self.adoquery.exesql;
      

  2.   

    我试了一下,也只有用ADOquery了,语法如下:
    begin
    .......
    self.adoquery.close;
    self.adoquery.sql.clear;
    self.adoquery.sql.add('insert into A1 select * from A2 set indenity_insert b1 on');
    self.adoquery.sql.add('insert into B1 select * from B2 set indentity_insert B1 off');
    self.adoquery.exesql;
    应该这样子可以了吧~`你试试
      

  3.   

    不需要使用ADOQUERY,执行这样的语句这样写最好了
    strsql:=你的语句;
    try
    adoconnection.begintrans;
    adoconnection.execute(strsql);
    adoconnection.committrans;
    except
    adoconnection.rollbacktrans;
    end;
      

  4.   

    现在有一个问题,
    insert into A1 select * from A2
    set identity_insert B1 on 
    insert into B1 select * from B2
    set identity_insert B1 off
    如果在导主表时要加where条件,如何让明细要按这个条件来导呢,不这样的话,我这里会发生外键冲突错误.
      

  5.   

    我觉得用ADOConnection或者ADOQuery都可以
      

  6.   

    如果能够在前台调用MS SQL SERVER的Query analyzer来执行就更好了,
    请关注此贴:
    http://expert.csdn.net/Expert/topic/2941/2941444.xml?temp=.4214441
      

  7.   

    其实都可以执行,可能是你的方法错了,你用showmessage(adocommand1.commandtext)
    或showmessage(ADoQuery1.sql.text);
    估计是你没有换行
      

  8.   

    先保存为sql文件,然后调用winexec函数执行命令行:
    osql -U username -P password -S servername -d dbname -i filename
    就可以,具体winexec用法查帮助