begin
  SQL.Clear;
  SQL.add('INSERT INTO work_order(OPER_SERIAL_NBR_97 ,ORDER_SERIAL_NBR,ORDER_TYPE_ID, AREA_ID,');
   sql.add('SERV_DEVICE,ACC_NBR,BATCH_SERIAL_NBR,APPLY_DATE,STATE_DATE,AFFIRM_DATE,
OPER_STATE,OPER_DATE)');
  SQL.Add('values(oper_serial_nbr_qj97.nextval,oper_serial_nbr_qj97.currval, ''2010'',''0728'',
''10'',');
                    sql.add(':acc_nbr,oper_serial_nbr_qj97.currval, to_date(:APPLY_DATE,''YYYYMMDD''),to_date(:APPLY_DATE,''YYYYMMDD''),to_date(:APPLY_DATE,''YYYYMMDD''),''1'',sysdate');
                    if Prepared = False then
                    prepare;
                    paramByName('acc_nbr').asstring:=trim(suiEdit1.text);
                    paramByName('apply_date').Asstring:=trim(suiEdit5.text);
                    execSQL;
                    end;现在是执行时报缺少逗号,ORA-00917: missing comma ,救救我

解决方案 »

  1.   

    不要直接sql.add,这样不好查错
    tmp:='select * from aaa';//在这里写你的sql语句
    sql.add(tmp);这样写的好处是如果出了错误,你可以用edit1.text:=tmp来输出sql语句进行判断,或者直接拿到客户端执行一下看看,方便修改
    具体语句就不给你看了,自己改一下吧,问题不难,就是方法不对而已
      

  2.   

    str_work_order:='INSERT INTO work_order_yang(OPER_SERIAL_NBR_97 ,ORDER_SERIAL_NBR,ORDER_TYPE_ID, AREA_ID,SERV_DEVICE,ACC_NBR,BATCH_SERIAL_NBR,APPLY_DATE,STATE_DATE,AFFIRM_DATE,OPER_STATE,OPER_DATE) values (oper_serial_nbr_qj97.nextval,oper_serial_nbr_qj97.currval, ''2010'',''0728'',''10'',:acc_nbr,oper_serial_nbr_qj97.currval, to_date(:apply_date,''YYYYMMDD''),to_date(:apply_date,''YYYYMMDD'') ,to_date(:apply_date,''YYYYMMDD''),''1'',sysdate)';
    这样报太长!
      

  3.   

    OK,搞定,把他分成了两部份
    Str_work_order1 和Str_work_order2谢谢楼上