zoukankan      html  css  js  c++  java
  • 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

    本篇文章来源于 Linux公社网站(www.linuxidc.com)  原文链接:https://www.linuxidc.com/Linux/2017-05/144361.htm

  • 相关阅读:
    Oracle EXTRACT()函数与to_char() 函数
    Java内部类
    SQL 之 Group By
    Android LayoutInflater布局填充器
    JS 图片转Base64
    C# 事件与委托的区别
    AngularJS的循环输出
    jquery实现button倒计时
    重新理解B/S和C/S的区别
    HashMap与HashTable
  • 原文地址:https://www.cnblogs.com/kionsonlu/p/9962140.html
Copyright © 2011-2022 走看看