sql的值错了
里面可能有'或者其他的非法字符

解决方案 »

  1.   

    你的DB是不是Oracle啊,应该是你的SQL语句后有一个分号
      

  2.   

    感谢上面两位仁兄的帮助,但是我的sql语句是正确的,复制到sqlplus 中执行是正确的。
      

  3.   

    你是用jdbc的吗,你试一下把execute,try出来看看有没有什么错误的提示,如日期就不可以直接用,要用todate或{d}
      

  4.   

    回复人: zhengg21(很努力) 
      感谢上面两位仁兄的帮助,但是我的sql语句是正确的,复制到sqlplus 中执行是正确的。=================================================
    是啊,在sqlplus中要分号,但用JDBC就不能有了,你去掉分号试试,以前我也遇过和你一样的问题。
      

  5.   

    我的sql是可以在 命令行工具中执行的,语法没有问题的。
      

  6.   

    把你的
    String sql = "";
    {
    此处给sql赋值,组合成一个update的sql语句
    }
    这个代码贴出来看看
      

  7.   

    是类型为Char的字段长度的问题,oracle8i的在入库数据是中文,而且和该字段长度刚好相等,比如Char(4)你入库两个汉字就可能出现911错误。你可以用其他数据库工具测试你的sql语句看看。
      

  8.   

    生成SQL 的代码非常复杂,如果都贴出来有300行还多,
    上面的建议我都试过了,还是不可以呀?
    急死我了
      

  9.   

    另外可能的话就是外键的问题了,oracle的外键很严的,如果出错也会抛出911,你检查SQL代码看看。另,300多行你要执行的是一个事务吧,看看是到哪一行抛出异常。
      

  10.   

    ORA-00911: invalid character.
    Cause: Special characters are valid only in certain places. If special characters
    other than $, _, and # are used in a name and the name is not enclosed in double ... 贴出来一部分,知道错误了吧!
      

  11.   

    把你在程序中生成的SQL帖出来看看啊
      

  12.   

    不要慌乱。
    300行代码都是事务的话,先执行一半看出问题不,找出出问题的一半sql,然后再排除1/4,……把错误确定在十几二十行中(如果高兴可以试到是哪一条出了问题),仔细检查一下。在数据库里可以执行在代码里不行有时候是夹参数的时候出的错。