v_insertsql:='INSERT INTO MYRPT' || v_field || ' VALUES(' || v_insertfield || ')';
修改如下:若v_field 是字符型
v_insertsql:='INSERT INTO MYRPT' || v_field || ' VALUES(''' || v_insertfield || ''')';

解决方案 »

  1.   

    仔细检查SQL语句
    INSERT INTO MYRPT(C1,C2,C3,C4,C5,C6)
    VALUES('P1','P2','P3','P4','P5','P6')
    表是否存在?字段名称是否有误?字段类型是否都是字符型?
    有没有其他字段,要求非空?
      

  2.   

    To beckhambobo(beckham)
     请看我上面给出的输出的SQL字符,已经组合了的,是没错的哦。
     
    而我现在把他试改为
    v_test:='select * from table1';
    execute immediate v_test;运行也抱错哦:
    ORA-00900: invalid SQL statement请问是怎么意思啊??
      

  3.   

    还有啊。把输出的SQL语句拿出来单独运行是没错的哦。
      

  4.   

    v_test:='select * from table1';
    execute immediate v_test;
    问题一:
    用execute immediate执行查询要这样execute immediate v_test into 变量;
    问题二:
    execute immediate v_test into 变量;--返回多行与没有行都会报错.