首先,让我首先说下面的代码不一定是有问题的输出的好选择,但这不是真实的生活情况,它只是一个学校练习。
我应该创建一个触发器,当后者超过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。
谢谢。
答案 0 :(得分:0)
毕竟我在代码中检测到了什么问题。似乎DBMS_OUTPUT.PUT()
不足以打印,我需要DBMS_OUTPUT.PUT_LINE()
。