1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131
| create or replace trigger "T_CHW_K"
BEFORE
insert OR UPDATE on "C_HW"
for each row
DECLARE
CHT C_HW.CH_TYP%TYPE;
N INTEGER;
CH CHAR;
CH2 CHAR;
V1 C_HW.CH_HERST%TYPE;
V2 C_HW.CH_TYP%TYPE;
BEGIN
CHT :=:NEW.CH_TYP;
--P_K_CHW(CHT);
IF UPPER(CHT)= 'LAPTOP' THEN
begin
SELECT S_CHW_NB.NEXTVAL
INTO N
FROM DUAL;
IF N<10 THEN
BEGIN
CH:=TO_CHAR(N);
--lpad(CH,2,'0');
CH:='00'+CH;
END;
ELSIF (N<100) THEN
begin
CH:=TO_CHAR(N);
--lpad(CH,1,'0');
CH:='0'+CH;
end;
END IF;
CH2:='NB';
--CONCAT(CH2,CH);
CH2:=CH2+CH;
-- :NEW.CH_ART:=CH2;
--INSERT INTO C_HW(CH_ART) VALUES CH2;
update C_HW SET CH_ART = CH2
WHERE CHBEZ = :NEW.CHBEZ ;
end;
ELSIF UPPER(CHT)= 'DESKTOP' THEN
begin
SELECT S_CHW_PC.NEXTVAL
INTO N
FROM DUAL;
IF N<10 THEN
begin
CH:=TO_CHAR(N);
--lpad(CH,2,'0');
CH:='00'+CH;
end;
ELSIF (N<100) THEN
begin
CH:=TO_CHAR(N);
--lpad(CH,1,'0');
CH:='0'+CH;
end;
END IF;
CH2:='PC';
--CONCAT(CH2,CH);
CH2:=CH2+CH;
--:NEW.CH_ART:=CH2;
--INSERT INTO C_HW(CH_ART) VALUES CH2;
update C_HW SET CH_ART = CH2
WHERE CHBEZ = :NEW.CHBEZ ;
end;
ELSIF UPPER(CHT)= 'SERVER' THEN
begin
SELECT S_CHW_SV.NEXTVAL
INTO N
FROM DUAL;
IF N<10 THEN
begin
CH:=TO_CHAR(N);
--lpad(CH,2,'0');
CH:='00'+CH;
end;
ELSIF N<100 THEN
begin
CH:=TO_CHAR(N);
--lpad(CH,1,'0');
CH:='0'+CH;
end;
END IF;
CH2:='SV';
--CONCAT(CH2,CH);
CH2:=CH2+CH;
--:NEW.CH_ART:=CH2;
--INSERT INTO C_HW(CH_ART) VALUES CH2;
update C_HW SET CH_ART = CH2
WHERE CHBEZ = :NEW.CHBEZ ;
end;
ELSIF UPPER (CHT)= 'CAD' THEN
begin
SELECT S_CHW_WS.NEXTVAL
INTO N
FROM DUAL;
IF N<10 THEN
begin
CH:=TO_CHAR(N);
--lpad(CH,2,'0');
CH:='00'+CH;
end;
ELSIF N<100 THEN
begin
CH:=TO_CHAR(N);
--lpad(CH,1,'0');
CH:='0'+CH;
end;
END IF;
CH2:='WS';
--CONCAT(CH2,CH);
CH2:=CH2+CH;
--:NEW.CH_ART:=CH2;
--INSERT INTO C_HW(CH_ART) VALUES CH2;
update C_HW SET CH_ART = CH2
WHERE CHBEZ = :NEW.CHBEZ ;
end;
ELSE RAISE_APPLICATION_ERROR(-20010, 'the type of computer is not existing, existings type : laptop, cad, desktop, server');
END IF;
end; |
Partager