DBMS_SESSION包小議(二)
除了使用ALTER SESSION設定會話的狀態,利用V$SESSION查詢會話狀態,Oracle還提供了PL/SQL介面DBMS_SESSION來查詢和設定會話相關的狀態。
描述SET_NLS過程。
DBMS_SESSION包小議(一):http://yangtingkun.itpub.net/post/468/498365
一般來說設定會話級的狀態都是透過ALTER SESSION語句,也有個別的例外,比如角色的設定是透過SET語句實現的。Oracle除了提供SQL的方法外,還提供了PL/SQL的介面,DBMS_SESSION包,將會話狀態的設定和查詢整合在這個包中。
簡單介紹一下SET_NLS過程,使用這個過程可以設定會話級的NLS引數設定:
SQL> SELECT * FROM V$NLS_PARAMETERS;
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE SIMPLIFIED CHINESE
NLS_TERRITORY CHINA
NLS_CURRENCY ¥
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT DD-MON-RR
NLS_DATE_LANGUAGE SIMPLIFIED CHINESE
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT DD-MON-RR HH.MI.SSXFF AM TZR
NLS_DUAL_CURRENCY ¥
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
已選擇19行。
下面利用SET_NLS過程修改NLS_DATE_FORMAT變數:
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
--------------
20-3月 -10
SQL> EXEC DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT', 'YYYY-MM-DD HH24:MI:SS')
BEGIN DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT', 'YYYY-MM-DD HH24:MI:SS'); END;
*
第 1 行出現錯誤:
ORA-00922: 選項缺失或無效
ORA-06512: 在 "SYS.DBMS_SESSION", line 164
ORA-06512: 在 line 1
SQL> EXEC DBMS_SESSION.SET_NLS('NLS_DATE_FORMAT', '''YYYY-MM-DD HH24:MI:SS''')
PL/SQL 過程已成功完成。
SQL> SELECT SYSDATE FROM DUAL;
SYSDATE
-------------------
2010-03-20 01:44:22
需要注意,SET_NLS的第二個引數VALUE輸入的值除了需要的格式外,還需要包含引號,否則會引發錯誤
其他的會話級NLS引數也可以修改:
SQL> SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL;
TO_CHAR(S
---------
星期六
SQL> EXEC DBMS_SESSION.SET_NLS('NLS_DATE_LANGUAGE', '''ENGLISH''')
PL/SQL 過程已成功完成。
SQL> SELECT TO_CHAR(SYSDATE, 'DAY') FROM DUAL;
TO_CHAR(SYSDA
-------------
SATURDAY
SQL> EXEC DBMS_SESSION.SET_NLS('NLS_LANGUAGE', '''AMERICAN''')
PL/SQL procedure successfully completed.
SQL> SELECT SYSTIMESTAMP FROM DUAL;
SYSTIMESTAMP
---------------------------------------------------------------------------
20-MAR-10 01.59.26.075978 AM +08:00
SQL> EXEC DBMS_SESSION.SET_NLS('NLS_TIMESTAMP_TZ_FORMAT', '''SYYYY-MM-DD HH24:MI:SS.FF TZR''')
PL/SQL procedure successfully completed.
SQL> SELECT SYSTIMESTAMP FROM DUAL;
SYSTIMESTAMP
---------------------------------------------------------------------------
2010-03-20 02:00:27.000487 +08:00
再次查詢V$NLS_PARAMETERS檢視,檢查修改後的引數設定:
SQL> SELECT * FROM V$NLS_PARAMETERS;
PARAMETER VALUE
------------------------------ ----------------------------------------
NLS_LANGUAGE AMERICAN
NLS_TERRITORY CHINA
NLS_CURRENCY ¥
NLS_ISO_CURRENCY CHINA
NLS_NUMERIC_CHARACTERS .,
NLS_CALENDAR GREGORIAN
NLS_DATE_FORMAT YYYY-MM-DD HH24:MI:SS
NLS_DATE_LANGUAGE AMERICAN
NLS_CHARACTERSET ZHS16GBK
NLS_SORT BINARY
NLS_TIME_FORMAT HH.MI.SSXFF AM
NLS_TIMESTAMP_FORMAT DD-MON-RR HH.MI.SSXFF AM
NLS_TIME_TZ_FORMAT HH.MI.SSXFF AM TZR
NLS_TIMESTAMP_TZ_FORMAT SYYYY-MM-DD HH24:MI:SS.FF TZR
NLS_DUAL_CURRENCY ¥
NLS_NCHAR_CHARACTERSET AL16UTF16
NLS_COMP BINARY
NLS_LENGTH_SEMANTICS BYTE
NLS_NCHAR_CONV_EXCP FALSE
19 rows selected.
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/4227/viewspace-629969/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- DBMS_SESSION包小議(八)Session
- DBMS_SESSION包小議(七)Session
- DBMS_SESSION包小議(六)Session
- DBMS_SESSION包小議(五)Session
- DBMS_SESSION包小議(四)Session
- DBMS_SESSION包小議(三)Session
- DBMS_SESSION包小議(一)Session
- 小知識二、Then協議協議
- 小議Linux安全防護(二)Linux
- 小議服務程式與會話(二)會話
- 小議IMP操作引數COMMIT=Y(二)MIT
- 第二次小組站立會議
- 小議Oracle外來鍵約束脩改行為(二)Oracle
- tshark 抓包 mysql 協議包MySql協議
- iOS 網路程式設計(二)UDP協議小結iOS程式設計UDP協議
- iOS 網路程式設計(二)TCP協議小結iOS程式設計TCP協議
- WireShark——IP協議包分析(Ping分析IP協議包)協議
- 小議分析函式中排序對結果的影響(二)函式排序
- 小議解析parse
- oracle nomount小議Oracle
- HTTP協議資料包HTTP協議
- MQTT協議(二)MQQT協議
- TCP協議小結TCP協議
- UDP協議抓包分析 -- wiresharkUDP協議
- Javascript 閉包小結JavaScript
- oracle包的使用(二)Oracle
- 資料庫安全小議資料庫
- 小議“資料開放”
- 小議星型轉換
- 小議軟體測試
- 物件導向先生和他的兄弟姐妹們(二)——小議【OOP、COP、AOP、SOP】物件OOP
- Http網路協議包 (快速理解)HTTP協議
- 使用WireShark抓包分析TCP協議TCP協議
- Wireshark中的TCP協議包分析TCP協議
- 二進位制協議 VS 文字協議協議
- python閉包小例子Python
- 微信小程式抓包-windows微信小程式Windows
- 微信小程式:小程式碼、小程式二維碼、普通二維碼微信小程式