根据不工作的条件触发输出值

时间:2014-04-04 14:54:50

标签: sql triggers sqlplus

首先,让我首先说下面的代码不一定是有问题的输出的好选择,但这不是真实的生活情况,它只是一个学校练习。

我应该创建一个触发器,当后者超过100,000时输出emp_id和salary。创建的触发器没有错误,但没有打印任何内容(即DBMS_OUTPUT),这让我觉得触发器的条件没有正确设置,但我看不出问题所在。

我正在使用SQLPLUS。

这是表格:

Name                                      Null?    Type
----------------------------------------- -------- -------------

EMP_ID                                    NOT NULL NUMBER(10)
FNAME                                              NVARCHAR2(20)
LNAME                                              NVARCHAR2(20)
MANAGER_EMP_ID                                     NUMBER(10)
SALARY                                             NUMBER(38)

这是我的触发器:

CREATE OR REPLACE TRIGGER check_salary
AFTER INSERT OR UPDATE OF SALARY ON EMPLOYEE
FOR EACH ROW
WHEN (NEW.SALARY > 100000)
BEGIN
    DBMS_OUTPUT.PUT('Salary value for ' || :OLD.EMP_ID || ' IS ' || :NEW.SALARY);
END;
/

这是我正在使用的插件,它不会触发关闭:

INSERT INTO EMPLOYEE(FNAME,LNAME,SALARY) VALUES ('Mary','Jane',100001);

(OBS:EMP_ID由前一练习中的另一个触发器自动插入)。

成功添加了行,但是没有DBMS_OUTPUT。

谢谢。

1 个答案:

答案 0 :(得分:0)

毕竟我在代码中检测到了什么问题。似乎DBMS_OUTPUT.PUT()不足以打印,我需要DBMS_OUTPUT.PUT_LINE()