是否创建了无法找到的编译错误?

时间:2013-12-02 06:01:52

标签: sql oracle plsql syntax-error plsqldeveloper

使用 TRIGGER FUNCTION 的组合自动监控最低库存水平,以触发提醒消息。

这是一个学习练习,并尝试使用stackoverflow的所有帮助来更改它,但似乎不想继续工作。

创建了以下语法:

CREATE OR REPLACE TRIGGER STOCKqtyCheck
AFTER INSERT OR UPDATE OF QTY ON STOCK
DECLARE

    MINIMUM_QTY NUMBER 
    QTY NUMBER
    STOCK_LOW_Error EXCEPTION;
BEGIN
    SELECT count(*)
    /* THE COUNT WILL LOOK INTO QTY */
    INTO QTY    
    FROM STOCK.MINIMUM_QTY
    WHERE
    /* WHERE MINIMUM QTY IS LESS THAN QTY */
    'MINIMUM_QTY' <= 'QTY' 
    IF STOCK_LOW_Error < 'MINIMUM_QTY' THEN
    RAISE STOCK_LOW_Error;
    END IF;
EXCEPTION
    WHEN STOCK_LOW_Error THEN
        Raise_Application_Error ('STOCK LEVEL TO LOW Error'));
END;
/

SQL输出:

SQL> CREATE OR REPLACE TRIGGER STOCKqtyCheck
  2  AFTER INSERT OR UPDATE OF QTY ON STOCK
  3  
  4  DECLARE
  5   
  6   MINIMUM_QTY NUMBER 
  7   QTY NUMBER
  8   STOCK_LOW_Error EXCEPTION;
  9  
 10  BEGIN
 11   SELECT count(*)
 12   /* THE COUNT WILL LOOK INTO QTY */
 13   INTO QTY 
 14   FROM STOCK.MINIMUM_QTY
 15   WHERE
 16   /* WHERE MINIMUM QTY IS LESS THAN QTY */
 17   'MINIMUM_QTY' <= 'QTY' 
 18   
 19   IF STOCK_LOW_Error < 'MINIMUM_QTY'  THEN
 20    RAISE STOCK_LOW_Error;
 21   END IF;
 22  
 23  EXCEPTION
 24   WHEN STOCK_LOW_Error THEN
 25    Raise_Application_Error ('STOCK LEVEL TO LOW Error'));
 26  END;
 27  /

Warning: Trigger created with compilation errors.

编译错误是什么?我检查了他们在那里的桌子,并正确创建了所有外键和&amp;主键也正确包括字段数据类型,如何将光标嵌入到触发器中?。

CURSOR Stock_count
 IS
 SELECT QTY,MINIMUM_QTY 
 FROM STOCK;

3 个答案:

答案 0 :(得分:1)

  

编译错误是什么?

在SQL * Plus中触发编译错误:

SQL> show errors trigger stockqtycheck

有关其他工具,请参阅工具的用户手册。

至少你错过了几个分号;

答案 1 :(得分:1)

SHOW ERRORS命令可能无法在所有情况下运行。据我所知,检索编译错误的最佳方法如下 -

SELECT *
  FROM user_errors
 WHERE name = 'STOCKQTYCHECK';

答案 2 :(得分:0)

我认为有一件事是与raise_application_error一起你必须将你的错误信息与-20000和-20999之间的错误号相关联。请参阅此链接http://docs.oracle.com/cd/B19306_01/appdev.102/b14261/errors.htm

或者你必须使用pragma_exception_init()

将用户定义的异常与oracle错误号相关联