I have an edit trigger:
--#SET TERMINATOR !
CREATE TRIGGER EMPSCREDIT
NO CASCADE BEFORE INSERT ON EMP_SCREEN_EDIT
REFERENCING NEW AS n
FOR EACH ROW MODE DB2SQL
BEGIN ATOMIC
DECLARE reason VARCHAR(68);
SET reason
= CASE WHEN LENGTH(RTRIM(TRANSLATE(EMPNO, '*', ' 0123456789'))) <> 0
THEN '130 INVALID EMP NUMBER - MUST BE NUMERIC '
WHEN FIRSTNME <= ' '
THEN '146 FIRSTNME IS MISSED'
WHEN LENGTH(RTRIM(TRANSLATE(FIRSTNME, '*', '
ABCDEFGHIGKLMNOPQRSTUVWXYZ'))) <> 0
THEN '146 INVALID FIRSTNME MUST BE ALPHABETIC'
WHEN LENGTH(RTRIM(TRANSLATE(MIDINIT, '*', '
ABCDEFGHIGKLMNOPQRSTUVWXYZ'))) <> 0
THEN '154 INVALID MIDINIT MUST BE SPACE OR ALPHABETIC'
WHEN LASTNAME <= ' '
THEN '165 LASTNAME IS MISSED'
WHEN LENGTH(RTRIM(TRANSLATE(FIRSTNME, '*', '
ABCDEFGHIGKLMNOPQRSTUVWXYZ'))) <> 0
THEN '165 INVALID LASTNAME MUST BE ALPHABETIC'
WHEN WORKDEPT NOT IN
('A01','BO1','C01','D11','D21','E01','E11',
'E21')
THEN '177 INVALID DEPATRMENT, VALID -->
A01,B01,C01,D11,D21,E01,
E11,E21'
WHEN JOB NOT IN('ANALYST ','CLERK ','DESIGNER','FEILDREP',
'MANAGER ‘OPERATOR','PRES ','SALESREP')
THEN '328 INVALID JOB DESCRIPTION'
WHEN EDLEVEL NOT IN(12,14,15,16,17,18,19,20)
THEN '345 INVALID EDUCATION LEVEL'
WHEN *** NOT IN ('M','F')
THEN '355 INVALID GENDER'
WHEN SALARY = 0
THEN '422 INVALID SALARY, MUST BE GREATER THAN ZERO'
WHEN HIREDATE <= BIRTHDATE
THEN '292 HIREDATE MUST GREATER THAN BITHDATE'
WHEN YEAR(HIREDATE) - YEAR(BIRTHDATE) < 18
THEN '292 HIRED EMPLOYEE MUST 18 OR OLDER'
ELSE NULL END;
IF reason IS NOT NULL THEN
SIGNAL SQLSTATE '7500S' (reason);
END IF;
END!
Also there are date fields which are not part of check in edit.
When date field is wrong system is genereting message:
The syntax of the string representation of a datetime value is incorrect
sqlcode: -180 .
Is it possible to process this error code in the trigger and populate
reason
field.i
--
Message posted via DBMonster.com
http://www.dbmonster.com/Uwe/Forums.aspx/ibm-db2/200807/1


|