我是学生在Oracle学习SQL。我正在创建一个触发器,在触发器中我正在调用一个过程update_price_history(item_id,NEW.price)。
这是我所做的陈述,
CREATE OR REPLACE TRIGGER upd_hist_trg
BEFORE INSERT OR UPDATE OF price ON Item
FOR EACH ROW
BEGIN
IF :NEW.price != price THEN
update_price_history(item_id, NEW.price)
END IF;
END;
我以为我有一切正确,但我收到一条错误消息: 错误(3,2):PLS-00103:在期待以下之一时遇到符号“END”:: =。 (%;符号“;”代替“END”继续。
我一直想弄清楚我出错了什么,我不知道它是什么。任何帮助将不胜感激。
答案 0 :(得分:0)
你最后忘记了分号
...
update_price_history(item_id, :NEW.price);
...
答案 1 :(得分:0)
试试这个:
CREATE OR REPLACE TRIGGER upd_hist_trg
BEFORE INSERT OR UPDATE OF price ON Item
FOR EACH ROW
DECLARE
item_id number;
BEGIN
IF :NEW.price != price THEN
update_price_history(item_id, :NEW.price);
END IF;
END;
您在:
前面忘了new
,在程序后忘了;
分号。顺便说一句,我看不到item_id
的任何变量定义。