使用 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;
答案 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错误号相关联