每当我在today = today / 86400000;
表中插入行时,我每次都试图在stud_report
表中插入一行。为此,我尝试在触发器的帮助下使用SQL代码,但我得到了:
警告:使用编译错误创建触发器。
stud_master
Stud_master表包含
CREATE OR REPLACE TRIGGER trg
AFTER INSERT ON stud_master
FOR EACH ROW
DECLARE
roll number;
sum number;
per decimal(5,2);
BEGIN
roll := stud_master.roll_no;
sum := stud_master.sub1+stud_master.sub2+stud_master.sub3;
per := (0.33*(sum));
insert into stud_report values (roll,sum,per);
END;
/
Stud_report表包含
+---------+--------------+----------+
| Field | Type | Null? |
+---------+--------------+----------+
| roll_no | number | NOT NULL |
| name | varchar2(15) | |
| sub1 | number | |
| sub2 | number | |
| sub3 | number | |
| Address | varchar2(30) | |
+---------+--------------+----------+
编译错误包括:
8/26 PLS-00103:遇到符号")"当期待其中一个 以下:
(
9/49 PLS-00103:遇到符号","当期待其中一个 以下:
(
10/7 PLS-00103:遇到符号"文件结束"什么时候期待 以下之一:
;
答案 0 :(得分:0)
你不是那么遥远 - 使用:new而不是表名(我会避免使用sum作为变量名)
create or replace
TRIGGER trg
AFTER INSERT
ON STUD_MASTER
FOR EACH ROW
DECLARE roll NUMBER;
sumNO NUMBER;
per decimal(5,2);
BEGIN
roll := :new.roll_no;
sumNO:= :new.sub1+:new.sub2+:new.sub3;
per := (0.33*(sumNO));
--dbms_output.put_line('New roll no '|| roll || ' sum = ' || sumno || ' PER = ' || per);
insert into stud_report values (roll,sumNO,per);
END ;
/