IF V_COUNT >0 THEN
V_COUNT都没有赋值,怎么能作判断

解决方案 »

  1.   

    谢谢!同意你的说法,但这不是问题的关键,是我考错了,现该如下:
    CREATE OR REPLACE TRIGGER "SBDBA"."TRI_TA_ZGGRZHSZMX_COMZHHRJE" AFTER INSERT OR DELETE OR UPDATE OF "CZY", "DFJE", "JFJE", "SHBZHM" ON "TA_ZGGRZHSZMX" FOR EACH ROW Begin
    Declare
    V_HRJE        NUMBER(18,2);
    V_COUNT       INTEGER;
    Begin
         SELECT COUNT(*) INTO V_COUNT  FROM TA_ZGGRZHSZMX WHERE SHBZHM=:NEW.SHBZHM;
         IF V_COUNT >0 THEN
          Select 
        SUM(
        DECODE(
        TA_ZGGRZHSZMX.CZY,
    '触发操作',0,
    '异地报销', 0, 
    '特病报销', 0,TA_ZGGRZHSZMX.DFJE - TA_ZGGRZHSZMX.JFJE)) INTO V_HRJE
       FROM TA_ZGGRZHSZMX 
       Where shbzhm=:NEW.SHBZHM;
       END IF;
    RETURN;
       UPDATE TA_GZJBXX SET HRZE=V_HRJE WHERE SHBZHM=:NEW.SHBZHM ;
      
       IF :NEW.SHBZHM <>:OLD.SHBZHM THEN
                Select 
                  sum(
                    DECODE(
                     TA_ZGGRZHSZMX.CZY,
                  '触发操作',0,
                  '异地报销', 0,
                 '特病报销', 0,TA_ZGGRZHSZMX.DFJE - TA_ZGGRZHSZMX.JFJE)) INTO V_HRJE
                 FROM TA_ZGGRZHSZMX 
                 Where shbzhm=:OLD.SHBZHM;
                
                 UPDATE TA_GZJBXX SET HRZE=V_HRJE WHERE SHBZHM=:OLD.SHBZHM ;
                
               END IF;
    End ; end;
      

  2.   

    写个存储过程直接更新就是,不必要写triger,实际应用中不推荐使用triger,应该说是可以不用就应当不用.
      

  3.   

    分成两个触发器写insert,update delete