1、这段linq,执行期间报ora-12704:character set mismatch错误。

1 var query = from m inctx.MENU2 where (m.SUPER_MENU_ID ?? "") == (parentMenuId ?? "")3 orderbym.SORT_ID descending4 select new { m.SORT_ID };

生成出来的sql如下:

1 SELECT "Project1"."SORT_ID" AS"SORT_ID"2 FROM(3

4 SELECT "Extent1"."SORT_ID" AS"SORT_ID"5 FROM"BA"."MENU" "Extent1"6 WHERE ((CASE WHEN("Extent1"."SUPER_MENU_ID" IS NULL) THEN ‘‘

7 ELSE "Extent1"."SUPER_MENU_ID" END) =

8 (CASE WHEN(&p__linq__0 IS NULL) THEN ‘‘

9 ELSE &p__linq__0 END))10

11 ) "Project1"12 ORDER BY "Project1"."SORT_ID" DESC

但是这条sql单独放到plsql里跑是OK的。

2、改成这样,让生成的sql去掉了里面的case when就OK了。

1 parentMenuId = parentMenuId ?? "";2 var query = from m inctx.MENU3 where m.SUPER_MENU_ID ==parentMenuId4 orderbym.SORT_ID descending5 select new { m.SORT_ID };

生成的sql如下:

1 SELECT "Project1"."SORT_ID" AS "SORT_ID" FROM(2

3 SELECT "Extent1"."SORT_ID" AS"SORT_ID"4 FROM"BA"."MENU" "Extent1"5 WHERE ("Extent1"."SUPER_MENU_ID" =:p__linq__0)6

7 ) "Project1"8 ORDER BY "Project1"."SORT_ID" DESC

3、目前的猜测是,ef生成出来的case

when有问题,调整linq不生成case

when即可。但奇怪的是,同样的sql在plsql里跑居然也是ok的,手工修改客户端的字符集也无法在plsql里重现这个问题,如下:

修改注册表里,HKEY_LOCAL_MACHINE\SOFTWARE\ORACLE\KEY_OraClient11g_home2\NLS_LANG,在plsql里客户端使用不同于服务端的字符集,但无法生成同样的错误。

修改前:

NLS_LANG = SIMPLIFIED CHINESE_CHINA.ZHS16GBK

Character Sets

Character

size: 2 byte(s)

CharSetID: 852

NCharSetID: 2000

Unicode Support:

True

NLS_LANG: SIMPLIFIED CHINESE_CHINA.ZHS16GBK

NLS_CHARACTERSET:

ZHS16GBK

NLS_NCHAR_CHARACTERSET: AL16UTF16

修改后:

NLS_LANG = SIMPLIFIED CHINESE_CHINA.AL32UTF8

Character Sets

Character

size: 2 byte(s)

CharSetID: 873

NCharSetID: 2000

Unicode Support:

True

NLS_LANG: SIMPLIFIED CHINESE_CHINA.AL32UTF8

NLS_CHARACTERSET:

ZHS16GBK

NLS_NCHAR_CHARACTERSET: AL16UTF16

4、这个问题只是暂时解决,仍然存疑中,待完善。主要参考这篇:

原文:http://www.cnblogs.com/AlexanderYao/p/3571702.html

oracle character set mismatch,EntityFramework查询oracle数据库时报ora-12704: character set mismatch...相关推荐

  1. oracle9i 恢复数据库,oracle 9i使用闪回查询恢复数据库误删问题

    如果用户误删/更新了数据后,作为用户并没有什么直接的方法来进行恢复,他们必须求助DBA来对数据库进行恢复,到了Oracle9i,这一个难堪局面有所改善.Oracle 9i中提供了一项新的技术手段--闪 ...

  2. 查询oracle的联机日志文件,查询Oracle日志文件的方法(摘自http://database.51cto.com/art/201010/231519.htm)...

    Oracle日志文件相信经常使用Oracle数据库的朋友都比较熟悉了,下面将为您介绍的是查询Oracle日志文件的几种方法,供您参考学习. 1.查询系统使用的是哪一组日志文件: select * fr ...

  3. oracle查运行sql语句,查询Oracle正在执行的SQL语句

    查询Oracle正在执行的sql语句及执行该语句的用户 查看正在执行sql的发起者的调用程序 查出oracle当前的被锁对象 结束当前的锁对象 无 SELECT b.sid oracleID, b.u ...

  4. oracle查大事务语句,查询Oracle 中死事务的语句

    查询Oracle 中死事务的语句 SQL> SELECT KTUXEUSN, KTUXESLT, KTUXESQN, /* Transaction ID */ 2  KTUXESTA Statu ...

  5. PLSQL连接Oracle数据库时报ORA 12154错误的解决方法

    pl/sql连接Oracle时遇到的问题: 解决办法:安装后将Oracle安装目录下的文件夹network(包括其中的子文件,其中主要是tnsnames.ora) 在pl/sql菜单–"工具 ...

  6. oracle+查表物理块数,查询Oracle表实际物理使用大小

    效果如下: 或者 Select Segment_Name,Sum(bytes)/1024/1024 from User_Extents Group By Segment_Name; 效果如下:[这个查 ...

  7. oracle千万级数据模糊查询,oracle模糊查询效率拔高

    分2种思路考虑模糊查询的效率的提高.--注:专注处理百万级数据量,小量数据就算了 第一种:把数据存到业务内存中,通过查询内存提高效率.(要求:硬件内存要高) 1,如果想实现内存动态数据,可以监控表数据 ...

  8. oracle在日期区间分页查询,Oracle 日期分页

    1.[代码]Oracle日期和分页 select * from li.books where book_publish_date between '1-2月-2005' and '1-2月-2010' ...

  9. oracle中日期的模糊查询,oracle日期模糊查询

    1,按时间段查询  issueDate ( 起始日期)       issueTwoDate (结束日期) if (StringUtils.isNotEmpty(issueDate) &&am ...

最新文章

  1. java中的new_java里的new到底是什么意思?
  2. 教你动手推导Self-Attention!(附代码)
  3. Struts的ONGL
  4. 宝塔中mysql数据库命名小坑
  5. 银行现在都很缺钱吗,为什么给的利息比以前高了?
  6. unity中创建游戏场景_在Unity中创建Beat Em Up游戏
  7. iOS用workspace和cocoapods管理多个项目
  8. 基于无监督深度学习的单目视觉的深度和自身运动轨迹估计的深度神经模型
  9. Android控制WIFI相关操作
  10. [妙味Ajax]第三课:AJAX跨域解决方案:JSONP
  11. 基于pyspark 大数据分析_基于阿里云平台的大数据教学案例 —— B站弹幕数据分析...
  12. Dev c++6.0下载
  13. 数学牛人们的轶事[下]--zt 出处不详
  14. 阿拉伯数字转中国人民币大写字符串
  15. 高德地图驾车导航内存优化原理与实战
  16. 品牌的成功取决于质量的好坏
  17. 2021年中国皮革行业市场现状分析,PU合成革趋势明显,汽车皮革是关键需求「图」
  18. 人生算法第一天心得总结(A)九段进阶(3-6)
  19. 镍离子去除专业吸附技术,深度除镍工程段工艺设计
  20. android 查看设备 x86,有了它 x86安卓设备就能用Windows软件了

热门文章

  1. ubuntu禁止指定软件包更新
  2. 短期怎么学会云计算?新手学习云计算的规划
  3. Poco库使用:操作Json格式数据
  4. 2017年度全球一级市场“投资龙虎榜”发布 | 钛媒体Pro独家
  5. 第04课:组件和商品详情
  6. jfinal与bootstrap的登出实战
  7. 84小时,230台服务器,袋鼠云和客户一起全力阻击WannaCrypt蠕虫病毒
  8. 测试人员的KPI考核指标
  9. 万万没想到:用理工科思维理解世界-读后感
  10. 网上经常听到的“终端”指的什么?