プロシージャでNLSパラメータを変更する場合は、 DBMS_SESSION.SET_NLS
.次のような環境があるとします:
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
プロシージャを実行すると、フォーマットが変更されます (3 つの単一引用符に注意してください):
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
または、動的 SQL を使用することもできます。即時 、例:
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
ただし 、 ジャスティンとして洞窟メモ
これは非常に珍しいことです。データ型を変換する場合は、常に明示的に行う必要があります 明示的な形式で。日付の場合、使用する正しい関数は です。 TO_DATE()