帮你改了一下,这里有问题,语句结束是分号,不是逗号,不知道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;
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;
SELECT COUNT(*) INTO TOTAL_cnyh_num FROM DESIGN_HEAT_USER1 WHERE build_area>'0' AND CODE LIKE ''||substrb(:NEW.CODE,1,1)||''; 我调试了,这种写法好象通不过去呀,总是0个错误,1个编译错误呀,
“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这个字段吗?
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;
(
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
)
NEW是表名吗?是序列吗?
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;
INTO TOTAL_cnyh_num
FROM DESIGN_HEAT_USER1
WHERE build_area>'0' AND
CODE LIKE ''||substrb(:NEW.CODE,1,1)||'';
我调试了,这种写法好象通不过去呀,总是0个错误,1个编译错误呀,
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这个字段吗?