Hvis du vil ændre en NLS-parameter i en procedure, kan du bruge DBMS_SESSION.SET_NLS
. Givet et miljø, der ser sådan ud:
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
udførelse af proceduren ændrer formatet (bemærk de tredobbelte anførselstegn):
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
Alternativt kan du bruge dynamisk SQL, EXECUTE IMMEDIATE
, for eksempel:
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
Men , som Justin Hulenoter
dette er meget usædvanligt. Hvis du konverterer mellem datatyper, bør du altid gøre dette eksplicit med et eksplicit format. I tilfælde af datoer er den korrekte funktion at bruge TO_DATE()