您好我在执行此触发器时遇到问题,即在表格中插入或修改之前MATIERES检查MATIERES中的小时数是否大于MODULES的小时数...如果是这种情况我必须提出异常......任何人都可以帮助我
CREATE OR REPLACE VerifNbrHeureMat
BEFORE INSERT OR UPDATE ON MATIERES
FOR EACH ROW
DECLARE
D_EXCEPTION EXCEPTION
BEGIN
IF(:New.NBRHEURE_MAT > (Select nbr_heure FROM MODULES where (id_module=:New.ID_MODULE));)
RAISE D_EXCEPTION
END IF
EXCEPTION
WHEN D_EXCEPTION THEN
RAISE_APPLICATION_ERROR(-20000,'Nbr heure matière Supérieur à Nbr Heure Module');
END;
答案 0 :(得分:0)
您可以使用SELECT INTO
执行以下操作CREATE OR REPLACE VerifNbrHeureMat
BEFORE INSERT OR UPDATE ON MATIERES
FOR EACH ROW
DECLARE
D_EXCEPTION EXCEPTION;
l_nbr_heure NUMBER;
BEGIN
Select nbr_heure into l_nbr_heure FROM MODULES
where id_module=:NEW.ID_MODULE;
IF(:NEW.NBRHEURE_MAT > l_nbr_heure)
Then
RAISE D_EXCEPTION;
END IF;
EXCEPTION
WHEN D_EXCEPTION THEN
RAISE_APPLICATION_ERROR(-20000,'Nbr heure matière Supérieur à Nbr Heure Module');
END;
答案 1 :(得分:0)
试试这个,
CREATE OR REPLACE TRIGGER VerifNbrHeureMat
BEFORE INSERT OR UPDATE ON MATIERES
FOR EACH ROW
DECLARE
l_hour modules.nbr_heure%TYPE;
BEGIN
SELECT nbr_heure
INTO l_hour
FROM modules
WHERE id_module = :NEW.ID_MODULE;
IF :NEW.NBRHEURE_MAT > l_hour THEN
RAISE_APPLICATION_ERROR(-20000, 'Nbr heure matière Supérieur à Nbr Heure Module');
END IF;
END;