我正在尝试基于if语句为变量分配值,该语句将用作触发器的一部分插入表中
如果要计算的另一个变量大于零,则尝试为该变量赋值。
CREATE OR REPLACE TRIGGER transactions_checking_trigger
AFTER INSERT OR UPDATE ON checking
FOR EACH ROW
DECLARE
account_type char(4);
account_num char(4);
trans_date date;
trans_amt number;
trans_type char(4);
trans_comments varchar(25);
BEGIN
account_type := 'CHEK';
trans_date := sysdate;
trans_amt := :new.balance-:old.balance;
if trans_amt > 0
trans_type := 'DEPT'
ELSE
trans_type := 'WDRW'
end if;
IF UPDATE THEN
INSERT INTO transactions (account_type, account_num, trans_date,
trans_amt, trans_type,trans_comments)
VALUES (account_type, :new.account_num,trans_date,trans_amt, trans_type,
new:trans_comments);
END IF;
END;
/
我希望触发器在trans_amt> 0时插入DEPT,在trans_amt <0时插入WDRW
答案 0 :(得分:1)
语法为IF-THEN-ELSE
;您错过了THEN
。另外,语句必须以分号结束。
if trans_amt > 0
then --> this
trans_type := 'DEPT'; --> semi-colon
ELSE
trans_type := 'WDRW'; --> semi-colon
end if;
一个更简单的选择:
trans_type := case when trans_amt > 0 then 'DEPT'
else 'WDRW'
end;
这是错误的:
IF UPDATE THEN
您是说updating
吗?