问题出在这里:
   SELECT bmmc00
     INTO bmmc
     FROM bm_bmbm00
    WHERE bmbh00 = :NEW.bmbh00;  -- delete 数据FOR EACH ROW是行级,不允许这么用.

解决方案 »

  1.   

    下面的修改未测试,你试试看:
    CREATE OR REPLACE TRIGGER zsl_tr_zsl_ygbm00s
       AFTER INSERT OR DELETE
       ON bm_ygbm00
       REFERENCING OLD AS OLD NEW AS NEW
       FOR EACH ROW
    DECLARE
       bmmc   VARCHAR2 (20);
    BEGIN
        
       IF INSERTING THEN
           SELECT bmmc00  --修改的地方
           INTO bmmc
           FROM bm_bmbm00
           WHERE bmbh00 = :NEW.bmbh00;      INSERT INTO zsl.zsl_ygbm00
                      (ygbh00, xkh000, zwxm00,
                       xb0000, bmmc00
                      )
               VALUES (:NEW.ygbh00, TRIM (:NEW.xkh000), :NEW.zwxm00,
                       :NEW.xb0000, bmmc
                      );
       ELSIF DELETING THEN
          DELETE FROM zsl.zsl_ygbm00
                WHERE ygbh00 = :old.ygbh00;
       ELSE        --修改的地方
          NULL;
       END IF;
    EXCEPTION
       WHEN OTHERS
       THEN
          raise_application_error (-20904,
                                      '操作表zsl_YGBM00时发生错误。*'
                                   || TO_CHAR (SQLCODE)
                                   || SQLERRM
                                  );
    END zsl_tr_zsl_ygbm00s;