NEW.CODE是什么?能提供表结构吗?最好是建表语句。。

解决方案 »

  1.   

    帮你改了一下,这里有问题,语句结束是分号,不是逗号,不知道NEW.CODE是什么意思?NEW是表吗?
    TO_CHAR(NEW.CODE, 0,1); 只好暂且加上引号,使编译通过
    SET cnyh_num:TOTAL_cnyh_num也有问题,改成SET cnyh_num=TOTAL_cnyh_num也许语句还可以优化,没有仔细看啦
    真的很希望能问问题的时候能提供相关表结构,最好建表语句,这样方便别人也方便自己
    我要看半天再建立表,多麻烦。。CREATE OR REPLACE TRIGGER SYS_DB_NEW_TRIGGER
        AFTER 
    INSERT
        ON DESIGN_HEAT_USER1
        FOR EACH ROW
    DECLARE
        TOTAL_cnyh_num  NUMBER;
    TOTAL_ktyh_num  NUMBER;
    TOTAL_rsyh_num  NUMBER;
    TOTAL_BUILD_AREA NUMBER;
    TOTAL_areaJ  NUMBER;
    TOTAL_areaY  NUMBER;
    TOTAL_abuild_area NUMBER;
    TOTAL_hbuild_area NUMBER;
    TOTAL_heat_load NUMBER;
    TOTAL_aheat_load NUMBER;

    BEGIN   SELECT COUNT(*)
       INTO TOTAL_cnyh_num
       FROM DESIGN_HEAT_USER1
       WHERE   build_area>'0' AND 
       CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT COUNT(*) 
       INTO TOTAL_ktyh_num
       FROM DESIGN_HEAT_USER1
       WHERE   abuild_area>'0' AND 
       CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT COUNT(*) 
       INTO TOTAL_rsyh_num
       FROM DESIGN_HEAT_USER1
       WHERE   hbuild_area>'0' AND 
       CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT SUM(build_area)
       INTO TOTAL_BUILD_AREA
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT SUM(areaJ)
       INTO TOTAL_areaJ
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT SUM(areaY)
       INTO TOTAL_areaY
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT SUM(abuild_area)
       INTO TOTAL_abuild_area
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT SUM(hbuild_area)
       INTO TOTAL_hbuild_area
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT SUM(heat_load )
       INTO TOTAL_heat_load 
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE 'TO_CHAR(NEW.CODE, 0,1)';
       
       SELECT SUM(aheat_load)
       INTO TOTAL_aheat_load
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE 'A%';  UPDATE SYSTEM_DB_NEW 
      SET cnyh_num=TOTAL_cnyh_num
      where code = '11';commit;
    END;
      

  2.   

    CREATE TABLE DESIGN_HEAT_USER1
    (
      CODE               VARCHAR2(20),
      NAME               VARCHAR2(50),
      BUILD_INDEX_TYPE   VARCHAR2(10),
      BUILD_AREA         NUMBER(10,2),
      AREAJ              NUMBER(12,2),
      AREAY              NUMBER(12,2),
      ABUILD_INDEX_TYPE  VARCHAR2(10),
      ABUILD_AREA        NUMBER(10,2),
      HBUILD_AREA        NUMBER(10,2),
      AREAJ_FINDEX       NUMBER(10,3),
      AREAY_FINDEX       NUMBER(10,3),
      HAREA_INDEX        NUMBER(10,2),
      HHOUR_COE          NUMBER(10,2),
      RES_LOSS           NUMBER(10,2),
      HEAT_LOAD          NUMBER(10,2),
      HLOAD_WIN          NUMBER(10,2),
      SUMLOAD_WIN        NUMBER(10,2),
      RUN_SUMMER         CHAR(2),
      AHEAT_LOAD         NUMBER(10,2),
      HLOAD_SUMMER       NUMBER(10,2),
      SUMLOAD_SUM        NUMBER(10,2),
      FLUX               NUMBER(10,3),
      HFLUX_WIN          NUMBER(10,3),
      SUMFLUX_WIN        NUMBER(10,3),
      AFLUX              NUMBER(10,3),
      HFLUX_SUM          NUMBER(10,3),
      SUMFLUX_SUM        NUMBER(10,3),
      TG                 NUMBER(4),
      TH                 NUMBER(4)
    )
    CREATE TABLE SYSTEM_DB_NEW
    (
      SYS_NAME       VARCHAR2(30),
      SYS_CODE       VARCHAR2(4),
      SYS_TYPE       VARCHAR2(30),
      RDC_NUM        NUMBER(3),
      RSGLD_NUM      NUMBER(3),
      ZQGLF_NUM      NUMBER(3),
      ZHGLF_NUM      NUMBER(3),
      DYRY_NAME      VARCHAR2(30),
      DYRY_P         NUMBER(10,3),
      NET_TYPE       VARCHAR2(8),
      QSHRZ_NUM      NUMBER(4),
      SSHRZ_NUM      NUMBER(4),
      CNYH_NUM       NUMBER(8),
      KTYH_NUM       NUMBER(8),
      RSYH_NUM       NUMBER(8),
      GYYH_NUM       NUMBER(8),
      CNYH_AREA      NUMBER(10,2),
      JLYH_AREA      NUMBER(10,2),
      YLYH_AREA      NUMBER(10,2),
      KTYH_AREA      NUMBER(10,2),
      RSYH_AREA      NUMBER(10,2),
      GYYH_AREA      NUMBER(10,2),
      SYS_POWER      NUMBER(10,2),
      CNSJ_LOAD      NUMBER(10,2),
      KTSJ_LOAD      NUMBER(10,2),
      RSPJ_LOAD      NUMBER(10,2),
      FIRST_TG       NUMBER(3),
      FIRST_TH       NUMBER(3),
      SECOND_TG      NUMBER(3),
      SECOND_TH      NUMBER(3),
      SYS_RANK       VARCHAR2(4),
      BELONG_CODE    VARCHAR2(4),
      NET_CODE       VARCHAR2(30),
      DYRY_NAME_RUN  VARCHAR2(30),
      DYRY_P_RUN     NUMBER(10,2)                   DEFAULT 20
    )
      

  3.   

    那你这个NEW.CODE在哪里啊?
    NEW是表名吗?是序列吗?
      

  4.   

    CREATE OR REPLACE TRIGGER SYS_DB_NEW_TRIGGER
        AFTER 
    INSERT
        ON DESIGN_HEAT_USER1
        FOR EACH ROW
    DECLARE
        TOTAL_cnyh_num  NUMBER;
    TOTAL_ktyh_num  NUMBER;
    TOTAL_rsyh_num  NUMBER;
    TOTAL_BUILD_AREA NUMBER;
    TOTAL_areaJ  NUMBER;
    TOTAL_areaY  NUMBER;
    TOTAL_abuild_area NUMBER;
    TOTAL_hbuild_area NUMBER;
    TOTAL_heat_load NUMBER;
    TOTAL_aheat_load NUMBER;

    BEGIN   SELECT COUNT(*)
       INTO TOTAL_cnyh_num
       FROM DESIGN_HEAT_USER1
       WHERE   build_area>'0' AND 
       CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT COUNT(*) 
       INTO TOTAL_ktyh_num
       FROM DESIGN_HEAT_USER1
       WHERE   abuild_area>'0' AND 
       CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT COUNT(*) 
       INTO TOTAL_rsyh_num
       FROM DESIGN_HEAT_USER1
       WHERE   hbuild_area>'0' AND 
       CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT SUM(build_area)
       INTO TOTAL_BUILD_AREA
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT SUM(areaJ)
       INTO TOTAL_areaJ
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT SUM(areaY)
       INTO TOTAL_areaY
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT SUM(abuild_area)
       INTO TOTAL_abuild_area
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT SUM(hbuild_area)
       INTO TOTAL_hbuild_area
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT SUM(heat_load )
       INTO TOTAL_heat_load 
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
       
       SELECT SUM(aheat_load)
       INTO TOTAL_aheat_load
       FROM DESIGN_HEAT_USER1
       WHERE CODE LIKE 'A%';  UPDATE SYSTEM_DB_NEW 
      SET cnyh_num=TOTAL_cnyh_num
      where code = '11';commit;
    END;
      

  5.   

    SELECT COUNT(*)
       INTO TOTAL_cnyh_num
       FROM DESIGN_HEAT_USER1
       WHERE   build_area>'0' AND 
       CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
    我调试了,这种写法好象通不过去呀,总是0个错误,1个编译错误呀,
      

  6.   

    “SELECT COUNT(*)
       INTO TOTAL_cnyh_num
       FROM DESIGN_HEAT_USER1
       WHERE   build_area>'0' AND 
       CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
    我调试了,这种写法好象通不过去呀,总是0个错误,1个编译错误呀,”
    =================================
    问题不是出在你说的那个地方啊。。
    你看看表SYSTEM_DB_NEW 有CODE这个字段吗?有吗?
     UPDATE SYSTEM_DB_NEW 
      SET cnyh_num=TOTAL_cnyh_num
      where code = '11';where CODE = '11' 表SYSTEM_DB_NEW 有CODE这个字段吗?