【问题标题】:set locale on Oracle connection在 Oracle 连接上设置语言环境
【发布时间】:2011-07-14 15:28:05
【问题描述】:

在我公司的产品中,我们一次从数据库中检索一个页面的结果。因此,所有过滤和排序都必须在数据库上完成。问题之一是编码值。为了使过滤和排序正常工作,代码值需要在查询中转换为特定于语言环境的标签。

我的计划是使用类似于以下的表格: t_code_to_label ( 输入 varchar2(10), 语言环境 varchar2(10), 代码 varchar2(10), 标签 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() 是我编造的。我如何在 JDBC 连接的 Java 端做一些事情来设置我拥有的 Connection 对象的语言环境,我可以在 Oracle 端通过一个简单的函数读取该对象。理想情况下,这是 Oracle 真正支持的语言环境,但我找不到这样的东西。

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

【问题讨论】:

    标签: oracle jdbc database-connection locale


    【解决方案1】:

    你说的是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'
    

    【讨论】:

    • 您可以使用如下函数读取查询中的值:sys_context('USERENV', 'NLS_SORT')
    猜你喜欢
    • 1970-01-01
    • 2023-04-04
    • 2010-09-09
    • 2011-09-20
    • 1970-01-01
    • 2011-01-24
    • 2021-06-27
    • 2012-06-26
    • 1970-01-01
    相关资源
    最近更新 更多