Skip to Main Content

SQL & PL/SQL

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

FRM-40735 ORA-01843: not a valid month IN WHEN-VALIDATE TRIGGER

Amatu Allah Neveen EbrahimMar 31 2008 — edited Apr 2 2008
Hello,can anyboady pls help me in this ; when calling the function i get the following error exception FRM-40735 ORA-01843: not a valid month IN WHEN-VALIDATE-TRIGGER
----------------------------------------------------------


FUNCTION Fn_Check_Permission_Time RETURN Number IS

v_Per_Count Number;
V_EMP_TIME_IN NUMBER(10,4):=0;
V_EMP_TIME_OUT NUMBER(10,4):=0;

V_EMP_TIME_I DATE;

V_EMP_TIME_O DATE;

V_MINUTES_IN NUMBER(10,4):=0;
V_MINUTES_OUT NUMBER(10,4):=0;
V_COUNT NUMBER(2);

Cursor GetEmpPer IS

SELECT EMPR_TIME_IN , EMPR_TIME_Out
From Emp_Permissioms
Where ( Empr_Date_From <= :Empr_Date_From And Empr_Date_To >= :Empr_Date_From)
OR ( Empr_Date_From <= :Empr_Date_To And Empr_Date_To >= :Empr_Date_To )
OR ( Empr_Date_From > :Empr_Date_From And Empr_Date_To < :Empr_Date_TO )
And Empr_Emp_No = :Empr_Emp_No ;

BEGIN

V_MINUTES_IN := SUBSTR(abs(TO_CHAR(:EMP_PERMISSIOMS.EMPR_TIME_IN,'MI'))/60 * 10,1,1);

V_MINUTES_OUT := SUBSTR(abs(TO_CHAR(:EMP_PERMISSIOMS.EMPR_TIME_OUT,'MI'))/60 * 10,1,1);

V_EMP_TIME_IN := TO_NUMBER(TO_CHAR(:EMP_PERMISSIOMS.EMPR_TIME_IN,'HH24')||'.'||V_MINUTES_IN);

V_EMP_TIME_OUT := TO_NUMBER(TO_CHAR(:EMP_PERMISSIOMS.EMPR_TIME_OUT,'HH24')||'.'||V_MINUTES_OUT);

FOR I IN GetEmpPer LOOP


IF TO_DATE(TO_CHAR(I.EMPR_TIME_IN,'HH24:MI') ) <= (TO_DATE(V_EMP_TIME_IN)) And TO_DATE((TO_CHAR(I.EMPR_TIME_Out,'HH24:MI'))) >= (TO_DATE(V_EMP_TIME_IN))

OR (TO_CHAR(I.EMPR_TIME_IN,'HH24:MI') <= TO_DATE(V_EMP_TIME_IN) And TO_DATE(I.EMPR_TIME_Out,'HH24:MI') <= TO_DATE(V_EMP_TIME_IN))
OR (TO_CHAR(I.EMPR_TIME_IN,'HH24:MI') <= TO_DATE(V_EMP_TIME_OUT) And TO_DATE(I.EMPR_TIME_Out,'HH24:MI') >= TO_DATE(V_EMP_TIME_OUT))

OR (TO_CHAR(I.EMPR_TIME_IN,'HH24:MI') > TO_DATE(V_EMP_TIME_IN) And TO_DATE(I.EMPR_TIME_Out,'HH24:MI') < TO_DATE(V_EMP_TIME_OUT))

THEN RETURN 1 ;

Message('THIS PERMISION IS TAKEN BEFORE');

RAISE FORM_TRIGGER_FAILURE;

ELSE RETURN 0;

End IF;

END LOOP;

End;


-------------------------------------------------------------------------------------


Regards,


Abdetu..
Comments
Locked Post
New comments cannot be posted to this locked post.
Post Details
Locked on Apr 30 2008
Added on Mar 31 2008
17 comments
8,101 views