阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

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

168次阅读
没有评论

共计 1272 个字符,预计需要花费 4 分钟才能阅读完成。

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

案例一: 字符集的问题

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

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

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

然而服务器的字符集是 TH8TISASCII

select userenv(‘language’) from dual

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

解决办法: 把 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

更多 Oracle 相关信息见 Oracle 专题页面 http://www.linuxidc.com/topicnews.aspx?tid=12

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2017-05/144361.htm

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计1272字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中