在Oracle连接上设置语言环境

时间:2011-03-13 21:58:15

标签: oracle jdbc database-connection locale

在我公司的产品中,我们一次从数据库中检索一个页面的结果。因此,必须对数据库进行所有过滤和排序。其中一个问题是编码值。要使筛选和排序正常工作,需要将代码值转换为查询中的区域设置特定标签。

我的计划是使用类似于以下内容的表格: t_code_to_label( type varchar2(10), locale varchar2(10), 代码varchar2(10), label varchar2(50) ) 前三列是主要(唯一)键。

使用此表时,您会看到类似这样的内容

select ent.name, ent.ent_type, entlabel.label as ent_type_label from t_entitlements ent join t_code_to_label entlabel on entlabel.type='entlabel' and entlabel.locale=currentLocale() and entlabel.code=ent.ent_type

问题是currentLocale()是我编造的东西。我怎样才能在Java连接的Java端做一些事情来设置我在一个简单的函数中可以在Oracle端读取的Connection对象的语言环境。理想情况下,这是Oracle真正的语言环境支持,但我找不到这样的东西。

我正在使用Oracle 10g和11g。

1 个答案:

答案 0 :(得分:6)

您是在谈论Oracle数据库的NLS_LANGUAGE设置吗?您(来自客户端)是否愿意指定Oracle数据库使用特定的NLS_LANGUAGE

然后这可能会奏效:Set Oracle NLS_LANGUAGE from java in a webapp

如果你想要一个“全美国”课程,你可以做一些像:

ALTER SESSION SET NLS_LANGUAGE= 'AMERICAN' NLS_TERRITORY= 'AMERICA' 
                  NLS_CURRENCY= '$' NLS_ISO_CURRENCY= 'AMERICA' 
                  NLS_NUMERIC_CHARACTERS= '.,' NLS_CALENDAR= 'GREGORIAN' 
                  NLS_DATE_FORMAT= 'DD-MON-RR' NLS_DATE_LANGUAGE= 'AMERICAN' 
                  NLS_SORT= 'BINARY'