【发布时间】:2020-01-30 22:31:37
【问题描述】:
我正在尝试编写一个程序来显示一周中的某一天,但我得到的错误是“ORA-01841:(完整)年份必须介于 -4713 和 +9999 之间,并且不能为 0”。 另一个问题是我创建了一个触发器来检查 SCOTT.BONUS.SALARY 中的列是否已更新并计算“多少” - 提高并返回它。它说应该声明 NEW.SAL ,但是如果它是列名,如何声明...? 我认为我很接近,但我错过了一些东西,有人可以帮忙吗?非常感谢。
-- trigger --
CREATE OR REPLACE TRIGGER Raise
BEFORE DELETE OR INSERT OR UPDATE ON SCOTT.BONUS
FOR EACH ROW
WHEN (NEW.SAL > 0.1*OLD.SAL)
DECLARE
howmuch number;
BEGIN
howmuch := 0.1*NEW.SAL;
dbms_output.put_line('Bonus changed to 10% - : ' || howmuch);
END;
/
-- Procedure --
CREATE OR REPLACE PROCEDURE Birth_Day(data IN varchar, Dey OUT varchar) IS
BEGIN
select to_char(date'data', 'Day') INTO Dey from dual;
END;
/
-- Starting procedure Birth_Day --
DECLARE
Dey varchar(20);
begin
Birth_Day('10/11/2020',Dey);
end;
【问题讨论】:
-
你不应该一次问两个不同的问题。我回答了其中一个。考虑为另一个问题问另一个问题。
标签: sql oracle date procedure database-trigger