• [Oracle]ORA-00911: invalid character 错误解决集锦


    参考https://www.linuxidc.com/Linux/2017-05/144361.htm

    ORA-00911: invalid character 错误解决集锦

    案例一:字符集的问题

    网上搜了一遍, 大多数是因为分号( ; ) 的问题.  而我的sql文件是没有分号的, 最后发现是sql文件编码和服务器字符集的差异造成

    sql文件怎么都看不出问题,直到在UltraEdit里切换到16进制模式下才发现有些怪字符, 文件编码是UTF-8

     

    然而服务器的字符集是TH8TISASCII

    select userenv('language') from dual

     

    解决办法: 把sql文件另存为ASCII编码就行了.

    案例二:今天在访问远程oralce数据库时,以前正确的语句也都会出现“ORA-00911: invalid character”的错误信息,在网上找了很长时间,也没有找到原因,但在搜索时,看到一篇文章说字符集的问题,我突然想到,我的系统之前恢复过系统,oarcle客户端也是今天刚安装的,我记得在系统设置中,要设置字符集那个变量,于是我从服务器上看到了该字段,在我本机上果然没有,于是我按照上面的路径把那个变量加上,具体路径和变量名如下:

    控制面板--系统和安全---系统--高级系统设置--高级--环境变量--系统变量中

    变量名:NLS_LANG

    变量值:SIMPLIFIED CHINESE_CHINA.ZHS16GBK

    把这个变量添加完成以后,把系统重启一下就ok了,重启以后,错误提示消失了。

    这个变量是在读取数据库中中文名称时出现的。

    案例三:今天在写SQL查询Oracle中的数据时遇到一个问题。在一般的SQL查询分析器中写好的SQL语句(运行一切正常),扔到用C#写的程序中就报错。错误代码如下:

    System.Data.OleDb.OleDbException:One or more errors occurred during processing of command.

    ORA-00911: invalid character at...

    检查了半天,实在是没找到任何SQL错误的原因,(本来怀疑是字符转码的问题,后来给排除了);最后,终于在网上查到了答案,原来“都是分号惹的祸”!

    我一般写SQL的时候都喜欢在每个语句结尾加上":",我想这也是一般写SQL的程序员的习惯。因为很多SQL的查询分析其时都会将这个分号当成一个语句的结束。但是,其实在正式执行的时候,是不能将这个分号扔到Oracle的解析器中的,因为Oracle的语法解析器特别严格,就会报出以上的错误出来,解决方法也很简单,去掉分号就可以了。

    以上的问题适用于任何用程序书写的Oracle数据查询,看起来有时候习惯也会害死人的。

    注:

    我是用C语言的OCI接口调用sql语句,sql语句末尾加了分号。

    错误号: 911

    错误描述:ORA-00911: invalid character

    另外一种解决问题的办法:

    把Web.config文件由

    <add name="FTCE" connectionString="Data Source=ftce;Persist Security Info=True;User ID=QMXX;Password=QMUSERXX "

          providerName="System.Data.OracleClient"/>

    变成:

    <add name="FTCE" connectionString="Data Source=ftce;Persist Security Info=True;User ID=QMXX;Password=QMUSERXX;Unicode=True"

          providerName="System.Data.OracleClient"/>

  • 相关阅读:
    Qt线程的简单使用(四)——QSemaphore的使用
    Qt线程的简单使用(三)——通过一个实例理解QMutex的使用
    Qt线程的简单使用(二)——通过继承QThread()创建线程
    Qt线程的简单使用(一)——通过QObject::moveToThread()创建线程
    高斯投影与UTM的异同
    基于Qt的Tcp协议的流程图
    OC系列高级-block
    OC系列foundation Kit基础-NSDate
    OC系列高级-内存管理关键字
    OC系列高级-NSValue
  • 原文地址:https://www.cnblogs.com/beeone/p/13973346.html
Copyright © 2020-2023  润新知