Oracle11g 创建更新另一个表中的列的after触发器(SQLplus)

Oracle11g 创建更新另一个表中的列的after触发器(SQLplus),oracle11g,sqlplus,Oracle11g,Sqlplus,每当订单行表中描述了来自订单调用表的类型2的订单时,我需要创建一个触发器来更新产品表中的数量。 我尝试了以下触发器,但不断出现错误: CREATE OR REPLACE TRIGGER updqty AFTER INSERT OR UPDATE ON ORDER_LINE FOR EACH ROW DECLARE ortype NUMBER(1); BEGIN SELECT @ortype=type FROM ORDER_CALL WHERE orderID=NEW.orderID;

每当
订单行
表中描述了来自
订单调用
表的类型2的订单时,我需要创建一个触发器来更新产品表中的数量。 我尝试了以下触发器,但不断出现错误:

CREATE OR REPLACE TRIGGER updqty AFTER INSERT OR UPDATE ON ORDER_LINE FOR EACH ROW 
DECLARE
ortype NUMBER(1);
BEGIN 
SELECT @ortype=type FROM ORDER_CALL WHERE orderID=NEW.orderID;
    IF (ortype=2) THEN
    UPDATE PRODUCT SET qty = qty - NEW.qty WHERE part_no=NEW.part_no;
END IF;
END;
我有
Products
表,其中包含每个可用产品的数量,
Order\u call
表,该表注册orderID及其类型(类型2表示实际销售)和
Order\u行
表,其中详细说明了实际订单。它在行上存储订单ID、零件号和销售数量。因此,对于
Order\u Call
表中类型2的每个orderID,我需要获取每个产品的销售数量(来自
Order\u Line
),并将其从
product
表中相应零件号的数量中减去

我收到以下编译错误:

4/2  PL/SQL: SQL Statement ignored
4/19 PL/SQL: ORA-00936: missing expression
我没有太多的SQL经验。
谢谢你的帮助

如果以后还有其他人需要这个,我终于找到了:

  CREATE OR REPLACE TRIGGER updqty
   BEFORE INSERT OR UPDATE
   ON ORDER_LINE
   FOR EACH ROW
DECLARE
   ortype   NUMBER (5);
BEGIN
   SELECT TYPE
     INTO ortype
     FROM ORDER_CALL
    WHERE order_call.orderID = :NEW.orderID;

   IF (ortype = 2)
   THEN
      UPDATE PRODUCT
         SET qty = qty - :NEW.qty
       WHERE part_no = :NEW.part_no;
   END IF;
END;
/

@用于SQL Server T-SQL。我建议您阅读一些Oracle文档。