對於如:爲什麼我們使用NLS_INSTANCE_PARAMETER?
Select * from nls_instance_parameter
where parameter = 'NLS_DATE_FORMAT';
PARAMETER VALUE
NLS_DATE_FORMAT DD-MON-RR
誰能解釋何時使用NLS_INSTANCE_PARAMETER?什麼是NLS_INSTANCE_PARAMETER?
對於如:爲什麼我們使用NLS_INSTANCE_PARAMETER?
Select * from nls_instance_parameter
where parameter = 'NLS_DATE_FORMAT';
PARAMETER VALUE
NLS_DATE_FORMAT DD-MON-RR
誰能解釋何時使用NLS_INSTANCE_PARAMETER?什麼是NLS_INSTANCE_PARAMETER?
表名實際上是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
如果設置,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更爲正常。
謝謝你sir :) –