sql_insert := 'INSERT INTO '||V_tablename||
               ' values ('''||P_flightno||''',
                         '''||V_buydate ||''',
                         '''||V_godate||''',
                         '''||P_flightflag||''',
                         '''||V_fltclass||''',
                         '''||V_spcode||''',
                         '''||sysdate||''',
                         '''||P_orgcity||''',
                         '''||P_descity||''',
                         '''||P_router||''',
                         '''||V_ruletype||''',
                           '||V_sid||')';
                           
execute immediate sql_insert; --测试出错:缺失表达式

解决方案 »

  1.   


    sql_insert := 'INSERT INTO '||V_tablename||
      'values ('||P_flightno||','
      ||V_buydate ||','
      ||V_godate||','
      ||P_flightflag||','
      ||V_fltclass||','
      ||V_spcode||','
      ||sysdate||','
      ||P_orgcity||','
      ||P_descity||','
      ||P_router||','
      ||V_ruletype||','
      ||V_sid||')';
    execute immediate sql_insert;
      

  2.   

    看看是不是每个字段都有对应的值了。 三个引号改成两个,一个改成没有。  ''||V_ruletype||'',
      ||V_sid||
      

  3.   


    oracle 单双引号问题
      

  4.   

    dbms_output.put_line(sql_insert);我看引号没有问题,看看这个结果是什么
      

  5.   

    sql_insert := 'INSERT INTO '||V_tablename||
      ' values ('''||P_flightno||''',
      '''||V_buydate ||''',
      '''||V_godate||''',
      '''||P_flightflag||''',
      '''||V_fltclass||''',
      '''||V_spcode||''',
      '''||sysdate||''',
      '''||P_orgcity||''',
      '''||P_descity||''',
      '''||P_router||''',
      '''||V_ruletype||''',
      '||V_sid||')';
        
    execute immediate sql_insert;  看错了 ,单双引号应该没有问题。 V_godate 如果是日期型的转成日期型再执行,。