Oracle 设置全球化支持环境

Posted

技术标签:

【中文标题】Oracle 设置全球化支持环境【英文标题】:Oracle Setting Up a Globalization Support Environment 【发布时间】:2016-02-01 09:24:30 【问题描述】:

我们希望在用户/模式级别为所有会话设置此SET NUMFORMAT 99999999999999999.00。目前,当设置此命令时,它仅适用于该会话。我们可以在全局范围内执行此操作,以便在我们打开连接时,它可以工作 >

【问题讨论】:

这是一个客户端设置。哪个客户?如果 SQL*Plus 总是在同一台机器上运行,那么您可以通过 login.sql/glogin.sql,例如;其他客户也可能允许。但它适用于所有数字 - 最好在查询中包含格式,以便它特定且适合每个值 - 如果您想要字符串表示,请指定您希望它的样子。但仅用于显示,运行查询的应用程序应该取回实际数字,并决定如何显示它。 【参考方案1】:

SET NUMFORMAT 是一个 SQL*Plus 命令。一般来说,客户端设置显示数字。

您始终可以将SQL*Plus 设置存储在login.sqlglogin.sql 中。每当SQL*Plus 启动时,它都会在$ORACLE_HOME/sqlplus/admin 目录下查找名为glogin.sql 的文件。如果找到这样的文件,则读取它并执行包含的语句。此外,在读取 glogin.sql 之后,sql*plus 还会在 SQL*Plus 所在的目录和环境变量 SQLPATH 指向的目录中查找名为 login.sql 的文件,并读取并执行它。 login.sql 中的设置优先于 glogin.sql 中的设置。

如果您只是显示数字,并希望它以所需的格式显示,请在 单个 SQL 语句级别使用 TO_CHAR

例如,

SQL> select to_char(123.456,'999.9') VALUE from dual
  2  /

VALUE
------
 123.5

底线,这是SQL*Plus 命令,而不是 Oracle SQLPL/SQL 命令。这只会影响来自SQL*Plus 的数据显示方式,不会影响访问数据库的其他程序的显示方式。无论您使用什么来显示数据,都应该有类似的东西,而不是SQL*Plus

【讨论】:

我想做那种通用设置,然后登录,然后插入表格命令。 Insert 语句与任何格式无关。 Oracle 以可变长度存储数字。它不会以您在客户端上显示时看到的方式存储。所以插入时无需担心格式化。您只需要显示时的格式,我已经回答了。

以上是关于Oracle 设置全球化支持环境的主要内容,如果未能解决你的问题,请参考以下文章

oracle数据库中都有哪些字符集,字符集之间的子集和超集关系是怎么样的?

原创SAP/Oracle 集团企业海外全球化实施注意事项: 一带一路本地化 (持续更新)

oracle字符集

全球首个支持事务一致性, 兼容DB2和Oracle的高速SQL on Hadoop引擎:Inceptor

2015最佳原创系列全球首个支持事务一致性, 兼容DB2和Oracle的高速SQL on Hadoop引擎:Inceptor

5 月全球数据库排名:PostgreSQL 有所回升;Fedora 开始支持 Google Chrome 和 Steam