CREATE OR REPLACE TRIGGER TB_SALES
BEFORE UPDATE OF NUM1, NUM2, NUM3, NUM4 ON  SALES
FOR EACH ROW /*到这里都能看懂*/DECLARE
cZHKUANG_NEW           SALES.ZHKUANG%TYPE;  /*SALES表中有ZHKUANG字段,写成ZHKUANG%TYPE是何意思?*/
cK_ZHKUANG             RCVD.K_ZHKUANG%TYPE;   /*SALES表中有K_ZHKUANG字段,写成K_ZHKUANG%TYPE是何意思?*/
nNUM4                  SALES.NUM4%TYPE    /*SALES表中有NUM4字段,写成NUM4%TYPE是何意思?*/
nCNT                   NUMBER;            /*这个是不是声明nCNT变量为NUMBER类型?*/BEGIN  
nNUM5 := 0; /*看不懂什么意思?*/
nCNT := 0 ;/* 10~80内部处理 */
IF :NEW.ZHKUANG >= '10' AND :NEW.ZHKUANG < '80' THEN
cZHKUANG_NEW := :NEW.ZHKUANG;/* 取得NUM5的数据 */
nNUM5 := NVL( :NEW.NUM4, 0 ) - NVL( :NEW.QTY_QCB, 0 );IF :NEW.NUM2 - :NEW.NUM4 = 0 THEN   /*看不懂,:NEW是什么?*/
 IF :NEW.CLS_GET = '1' THEN  
   cZHKUANG_NEW := '20';    /*:=是什么?*/      
   ELSE
  cZHKUANG_NEW := '25';         
  END IF;
END ;

解决方案 »

  1.   

    你还是多看看基础点的书吧
    cZHKUANG_NEW SALES.ZHKUANG%TYPE;--定义变量cZHKUANG_NEW 类型为SALES表的ZHKUANG列的类型
    --其他的类似
    nNUM5 := 0;--给变量赋值
    :new 可以理解为是存放新值的表
    := 是赋值操作符
      

  2.   


    oracle是通过:=赋值,而不是=好赋值吗?
      

  3.   

    是的,Oracle的=只是用来判断相等,:=才是赋值
      

  4.   

    oracle就是这么规定的
    :=赋值
    =赋变量
      

  5.   

    :new就是新insert到sales表的那条记录,而:new.num2就是该记录的num2列的值。
      

  6.   


    前辈们能否推荐几本oracle的书籍呢,电子版或书籍都可以i?
      

  7.   

    你先看看数据库理论方面的书 高等教育出版社出版的 忘了具体叫什么名字了 你上网查查
    sql21自学通还可以的
      

  8.   


    OH , MY GOD,你不会是推荐我看严蔚敏的数据库基本理论吧?那可是纯理论的书,对实际商业运用个人感觉毫无用途