Nếu bạn muốn thay đổi tham số NLS trong một thủ tục thì bạn có thể sử dụng DBMS_SESSION.SET_NLS
. Cho một môi trường giống như sau:
SQL> select value
2 from nls_session_parameters
3 where parameter = 'NLS_DATE_FORMAT';
VALUE
------------------------------------------
DD-MON-RR
SQL> select sysdate from dual;
SYSDATE
---------
25-NOV-14
thực hiện thủ tục sẽ thay đổi định dạng (lưu ý ba dấu nháy đơn):
SQL> begin
2 dbms_session.set_nls('nls_date_format', '''yyyy-mm-dd''');
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> select sysdate from dual;
SYSDATE
----------
2014-11-25
Ngoài ra, bạn có thể sử dụng SQL động, EXECUTE IMMEDIATE
, ví dụ:
SQL> begin
2 execute immediate 'alter session set nls_date_format = ''yyyy-mm''';
3 end;
4 /
PL/SQL procedure successfully completed.
SQL> select sysdate from dual;
SYSDATE
-------
2014-11
Tuy nhiên , như Justin Ghi chú hang động
điều này là rất bất thường. Nếu bạn đang chuyển đổi giữa các kiểu dữ liệu, bạn nên thực hiện việc này một cách rõ ràng với một định dạng rõ ràng. Trong trường hợp ngày tháng, hàm chính xác để sử dụng là TO_DATE()