为什么我这条语句在PL/SQL中执行是对的,但是拿到ADOQuery里执行就会报错啊?语句如下:insert into A select B.*, 'a', 'b', 'c' from B;ADO提交后说是语句未正常结束。为什么? 哪位能说一下。多谢了!

解决方案 »

  1.   

    insert into A(a,b,c) select a, b, c from B;
    两表数据类型、长度必须一致
      

  2.   

    insert into A (字段1,字段2,字段3..字段n)
    select B.字段1..b.字段m, 'a', 'b', 'c' from B
      

  3.   

    query.sql.add('insert into A select B.*, ''a'', ''b'', ''c'' from B');
    引号和分号!Microsoft OLE DB Provider for SQL Server 错误 '80040e31' 超时已过期 /Expert/reply.asp,行105
      

  4.   

    sql.add('insert into t06302 select ''code'',''name'' from t06302');
      

  5.   

    不是语法错误,是该语句提交到数据库报错了:“语句未正常结束”。但是这条语句我在PL/SQL中执行是对的。A, B两张表的其他字段都是一样的,除了B比A多加了两个字段。哪位能告诉我为什么?谢谢了。
      

  6.   

    insert into A Values(select B.*, 'a', 'b', 'c' from B)
      

  7.   

    我说不是delphi中的语法错误。呵呵
      

  8.   

    query.sql.add('insert into A select B.*, ''a'', ''b'', ''c'' from B');
      

  9.   

    还有你这条SQL语句好像语法不对,你执行的了吗。我的那个写法好像是对的,但是就是在ADOQuery中执行不了。不知道为什么。
      

  10.   

    sql语句没问题
    是不是忘了query.Execute
      

  11.   

    wdsimon,你的语句我也是这么写的,但是好像提交到数据库的时候出错了,执行不了。我也不知道为什么。难道要我一个字段一个字段用values写出来。我这个表可是有100多个字段啊。自己写太可怕了。
      

  12.   

    DWGZ0我用了ExecSQL了,但是好像一执行就报错。
      

  13.   

    一个最简单的的测试方法,假设A没有设置主键。ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add("insert A select * from A");
    ADOQuery1.ExecSQL;上面的语句你们的程序能不能执行,我试了一下我这边好像是不行的。是ADOQuery会挑语句?还是我本身的问题?困惑中。大家能不能也去试试?谢谢了!
      

  14.   

    打错了。应该是:ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add("insert into A select * from A");
    ADOQuery1.ExecSQL;反正还是执行不了。到ADOQuery1.ExecSQL语句出错,说是“命令未正常结束”。
      

  15.   

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add("insert into A select * from A;"); //oracle应该用';'结束一句话。
                                                         //所以应该在最后增加一个';'
    ADOQuery1.ExecSQL;
      

  16.   

    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add("insert into A select * from A;"); //oracle应该用';'结束一句话。
                                                         //所以应该在最后增加一个';'
    ADOQuery1.ExecSQL;
      

  17.   

    靠!肯定能执行,我试过了,Win2000 + D5 + ACCESS
      

  18.   

    把下面的代码你试一下,如果不行我跳楼。靠!ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('insert into A select * from A');
    ADOQuery1.ExecSQL;
      

  19.   

    ORACLE啊。出错提示是"ora00933: SQL命令未正确结束"。怎么回事?哪位能帮帮我啊。痛苦啊!!!!
      

  20.   

    555555555555~~~~~~~~~~~~~
    ADOQuery1.Close;
    ADOQuery1.SQL.Clear;
    ADOQuery1.SQL.Add('insert into A select * from A;');
    ADOQuery1.ExecSQL;
      

  21.   

    我早就试过了。加了分号以后,出错提示是"ora00911: 无效字符"。
    55555555......................................
      

  22.   

    我没装Oracle你还是自己看一看他的帮助吧!
      

  23.   

    我用别的客户端比如PL/SQL执行这条语句是可以通过的。但是在ADOQuery中运行就是不对。不知道为什么。难道要我100多个字段一个一个打过来。痛苦了要。55555555
      

  24.   

    干吗要这样用procedure不就得了。