例如:
Select * from nls_instance_parameter
where parameter = 'NLS_DATE_FORMAT';
PARAMETER VALUE
NLS_DATE_FORMAT DD-MON-RR
任何人都可以解释何时使用NLS_INSTANCE_PARAMETER?什么是NLS_INSTANCE_PARAMETER?
答案 0 :(得分:1)
表名实际上是nls_instance_parameters
(复数)。它全部在the docs。
NLS参数确定两者上特定于语言环境的行为 客户端和服务器。
您提到的那个 - NLS_DATE_FORMAT
- 定义了与TO_CHAR
和TO_DATE
函数一起使用的默认日期格式。
文档中的好例子:
设置默认日期格式以显示罗马数字 月,在初始化参数中包含以下行 文件:
NLS_DATE_FORMAT = "DD RM YYYY"
输入以下SELECT语句:
SELECT TO_CHAR(SYSDATE) currdate FROM dual;
如果今天的日期是2月12日,你会看到以下输出, 1997年:
12 II 1997
答案 1 :(得分:1)
如果设置,则NLS_INSTANCE_PARAMETERS会覆盖NLS_DATABASE_PARAMETERS中的设置,但会被NLS_SESSION_PARAMETERS覆盖。
有关此in the docuemntation的一些信息:
在执行CREATE DATABASE语句期间创建新数据库时,将建立与NLS相关的数据库配置。当前的NLS实例参数与数据库和国家字符集一起存储在数据字典中。在实例启动时从初始化参数文件中读取NLS实例参数。
And;
应用程序可以通过查询以下数据字典视图来检查会话,实例和数据库NLS参数:
- NLS_SESSION_PARAMETERS显示查询视图的会话的NLS参数及其值。它不显示有关字符集的信息。
- NLS_INSTANCE_PARAMETERS显示已显式设置的当前NLS实例参数以及NLS实例参数的值。
- NLS_DATABASE_PARAMETERS显示数据库的NLS参数值。值存储在数据库中。
NLS设置有一个优先顺序。如果会话未显式设置NLS参数,则使用实例设置;如果实例未明确设置该参数,则使用数据库设置。
NLS_DATE_FORMAT是可能会改变的一个很好的例子。数据库在创建时设置了默认格式。如果pfile / spfile指定它,则在启动实例时优先。新会话将使用实例设置,或者如果未明确设置,则将继承数据库设置。但是许多客户端将设置NLS_DATE_FORMAT - 例如,SQL Developer允许您通过其首选项设置该设置和其他NLS设置;并且您可以ALTER SESSION SET NLS_DATE_FORMAT ...
在会话期间再次更改它。
您不太可能需要直接引用NLS_INSTANCE_PARAMETERS,因为它不一定会告诉您有关当前会话的任何有用信息 - 因为并非所有值都已设置且某些值可能被覆盖。我认为,如果您需要了解任何当前会话设置,则查询NLS_SESSION_PARAMETERS更为正常。