我创建了一个名为marks的关系,其中包含以下字段
create table marks (
rollno numeric(5),
Name varchar2(10),
mark1 numeric(3),
mark2 numeric(3),
mark3 numeric(3),
total numeric(3)
);
我在关系中插入了几行,即。
Insert into marks (rollno, Name, mark1, mark2, mark3)
values(1, 'Caesar', 85, 90, 89);
Insert into marks (rollno, Name, mark1, mark2, mark3)
values(2, 'Abi', 80, 87, 88);
Insert into marks(rollno, Name, mark1, mark2, mark3)
values(3, 'Aish', 70, 89, 75);
现在,我想创建一个通过添加3个标记来更新total字段的过程。您能帮我吗?
使用虚拟列:
create table marks (
rollno numeric(5),
Name varchar2(10),
mark1 numeric(3),
mark2 numeric(3),
mark3 numeric(3),
total numeric(3) generated always as (mark1 + mark2 + mark3)
);
然后它是表的一部分,您无需做任何工作就可以使它保持最新。
create or replace procedure find_total
as
begin
update marks set total=mark1+mark2+mark3;
dbms_output.put_line('Total updated');
end find_total;
begin
find_total;
end;