首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >PLS-00103触发器错误

PLS-00103触发器错误
EN

Stack Overflow用户
提问于 2013-04-02 03:13:27
回答 1查看 552关注 0票数 0

如果价格上涨超过10%,此触发器将抛出错误。由于某种原因,我收到了PLS-00103错误。

代码语言:javascript
复制
CREATE OR REPLACE TRIGGER product_price_updt
BEFORE UPDATE ON PRODUCT
FOR EACH ROW
DECLARE
price_error VARCHAR2(100);
BEGIN
IF (:new.price > :old.price * 1.1) THEN raise price_error;
END IF;
EXCEPTION 
when price_error then ('Price increase is greater than 10%, update cancelled');
END;

这是我编译它时看到的。

代码语言:javascript
复制
Error(7,78): PLS-00103: Encountered the symbol ")" when expecting one of the following:     * & = - + < / > at in is mod remainder not rem    <an exponent (**)> <> or != or ~= >= <= <> and or like like2    like4 likec as between || multiset member submultiset 

也许我的语法是错误的,这个错误是误导性的。我找不到问题所在。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-04-02 03:21:12

RAISE必须与异常一起使用-在这里,您将其与VARCHAR2参数一起使用,这是一个问题。另一个我能看到的是,在你的异常代码块中,你有一个字符串('Price increase is increated10%,update call‘),其中你需要一些函数调用。我建议将触发器重写为:

代码语言:javascript
复制
CREATE OR REPLACE TRIGGER product_price_updt
  BEFORE UPDATE ON PRODUCT
  FOR EACH ROW
DECLARE
  price_error EXCEPTION;
BEGIN
  IF (:new.price > :old.price * 1.1) THEN
    raise price_error;
  END IF;
EXCEPTION 
  when price_error then
    DBMS_OUTPUT.PUT_LINE('Price increase is greater than 10%, update cancelled');
END product_price_updt;

分享和享受。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15750052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档