Pl / Sql触发器用于更改oracle中的默认日期格式

时间:2014-04-24 17:57:11

标签: sql oracle plsql oracle11g

我想确保每次登录时日期格式都从'24-Apr-2014'更改为'24/04/2014'

为此我创建了一个pl / sql触发器,如下所示

    CREATE OR REPLACE TRIGGER CHANGE_DATE_FORMAT
    AFTER LOGON ON DATABASE
    BEGIN
    ALTER SESSION SET NLS_DATE_FORMAT = 'MM/DD/YYYY';
    END;
    /

但是我没有以sysdba身份登录,所以也许这就是我收到错误的原因

    SQL> @C:/pl/dateTrigger.sql
    AFTER LOGON ON DATABASE
           *
    ERROR at line 2:
    ORA-01031: insufficient privileges

如何确保永久更改日期格式?

1 个答案:

答案 0 :(得分:1)

您的错误意味着您不能创建此类触发器。但是你走错了路。您必须在数据库级别设置默认值。

设置默认日期时间格式模板

来自Oracle documentation

  

使用初始化参数NLS_DATE_FORMAT 显式或使用初始化参数NLS_TERRITORY 隐式指定默认日期时间格式模板。您可以使用ALTER SESSION语句更改会话的默认日期时间格式。

然后,对于您的情况,必须在database initialization parameters

中设置此格式

要检查当前会话中是否有正确的值:

select value from v$parameter where upper(name)='NLS_DATE_FORMAT';