ORA-00911事件

今天在用C#执行Oracle语句的时候出现了一个很奇怪的问题,查询字符串在PLSQL这样的Oracle工具中是可以执行的,但是在用ODP.NET(Oracle Data Provider for .NET)来进行查询的时候却出现ORA-00911错误,ORA-00911事件解释如下:

无效字符

起因: 标志符只能心数字和ASCII码字母开头,后续中也可以包含$#_。双引号内可以包含除了双引号外的所有字符,另外单引号中不能有空格,制表符或其他分隔符,违反以上规则都有可能引发无效字符错误。

 呵呵,上面的本来是英文,自己翻译的,不好请见谅。最后在网上查了一些资料,算是解决了,那就是查询语句最的“;”问题。如果去掉最后的一个“;”则可以正常的执行。自己测试了一个,在用ODP.NET执行语句是这个现象是普遍存在的。但是用ADO.NET进行SQL Server查询时这个现象是不存在的,只能说这是ODP.NET的问题了。

自己试了一下在Oracle工具中如果在一个语句末尾加两个“;”,则也会出现同样的问题,所以设想如下:在ODP.NET中在进行查询向数据库提交时会自动在末尾添加分号,所以如果在字符串中有分号就会出现错误。但ADO.NET中用于连接SQL Server的进行了智能化的处理,如果末尾有分号则不加分号,如果没有分号则添加分号。所以无论有没有分号都可以正常的执行。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值