gpt4 book ai didi

stored-procedures - 在哪里更改 oracle 11g 中的 NLS_DATE_FORMAT?

转载 作者:行者123 更新时间:2023-12-04 02:22:24 25 4
gpt4 key购买 nike

我需要更改我的存储过程中的 NLS_DATE_FORMAT。它似乎是一个 session 变量,我应该在哪里更改变量掩码。

它应该在全局声明中还是在其他地方完成(我的意思是从前端)。

最佳答案

如果你想改变程序中的 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

执行过程会改变格式(注意三重单引号):

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,EXECUTE IMMEDIATE ,例如:

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

然而,如Justin Cave notes这是非常不寻常的。如果您在数据类型之间进行转换,您应该始终明确地使用明确的格式进行转换。对于日期,要使用的正确函数是 TO_DATE()

关于stored-procedures - 在哪里更改 oracle 11g 中的 NLS_DATE_FORMAT?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27120420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com