2014-04-24 2 views
1

에 기본 날짜 형식을 변경 내가 날짜 형식을 로그온 할 때마다PL/SQL 트리거 오라클

다음과 같이 내가 PL/SQL 트리거를 만들어이를 위해 '24/04/2014'

'24-Apr-2014' 변경되었는지 확인하려면 내가 오류를 얻을하는 이유는 SYSDBA로 로그인하고 있지 않다 그러나

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

그래서 아마도 그게 전부

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

날짜 형식이 영구적으로 변경되도록하려면 어떻게해야합니까?

+1

안녕 파질 :

는 현재 세션의 오른쪽 값을 확인하십시오. 로그인 방법 예 : SQL Plus 등을 사용하는 것입니다. sys/pwd 명령을 sysdba 명령으로 사용하십시오. –

+8

일반적으로 nls_date_format은 클라이언트에서 설정되는 항목입니다. 클라이언트 측 구성으로이 작업을 수행 할 수 없거나 수행하고 싶지 않은 이유가 있습니까? 데이터베이스에 로그온 트리거를 만들 수있는 권한을 얻을 수없고 얻을 수 없다는 말입니까? 그리고 한 발 뒤로 물러나십시오. 어떤 문제를 해결하려고합니까? 사람들이'nls_date_format'에 지나치게 염려 할 때, 이것은 종종 어플리케이션이 암시 적 문자열 - 날짜 변환에 의존하고 있음을 의미합니다. –

+2

또한, login.sql 사용자 프로파일에서 사용하는 경우이 설정을 고려해 볼 수 있습니다. 모든 로컬 명령 행 사용자의 경우에는 'glogin.sql'사이트 프로파일을 사용하는 것이 좋습니다. SQL * Plus (예 : JDBC 포함)뿐만 아니라 혼동을 유발할 수있는 모든 클라이언트에 로그온 트리거가 적용됩니다. 그리고 트리거 자체 내에서 선택적으로 적용하지 않는 한 모든 사용자. 'execute immediate' 명령을 사용하여'alter session' 명령을 실행하면 PL/SQL 내에서 간단한 명령문으로 인식되지 않습니다. –

답변

1

오류는 이러한 트리거를 만들 수 없음을 의미합니다. 하지만 잘못된 길로. 데이터베이스 레벨에서 기본값을 설정해야합니다.

설정 기본 날짜 시간 형식 템플릿

초기화 매개 변수 NLS_TERRITORYOracle documentation

기본 날짜 형식의 템플릿이 지정되어 명시 적으로 초기화 매개 변수 NLS_DATE_FORMAT 또는 암시 적으로 에서. ALTER SESSION 문을 사용하여 세션의 기본 datetime 형식을 변경할 수 있습니다.

그런 다음이 형식을 database initialization parameters에 설정해야합니다. 당신이 조금 정교한 수

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