3,491
社区成员
发帖
与我相关
我的任务
分享
create or replace trigger Tig_CNOOC_ZJDC_MAXIMO_ONOFF
after insert or update on CNOOC_ZJDC_MAXIMO_ONOFF
for each row
declare _assetNo varchar2(100);
declare _dateTime date;
declare _tagName varchar2(400);
declare _dataValue number(15,3);
declare _type varchar2(10);
declare _tableName varchar2(50);
declare _tableColumn varchar2(50);
declare _sql varchar2(2000);
if inserting or updating then
_tagName:=:new.TAGID;
_dataValue:=:new.DATAVALUE;
_type:=:new.TYPE;
_assetNo:=:new.EQNUM;
_dateTime:=:new.DATETIME;
declare _cnt number;
_sql:='select count(TagName) into '||_cnt||',TagName into '||_tableName||',TableName into '||_tableColumn||' from DC_RALATIONSHIP_TAG where TagName='||_tagName||' and Type='||_type||'';
execute immediate _sql;
if _cnt>0 then
declare _num number;
_sql:='select count(*) into '||_num||' from '||_tableName||' where EQNUM='||_assetNo||' and DATETIME=todate('||_dateTime||','yyyy:MM:dd hh24:mi:ss')';
execute immediate _sql;
if _num=0 then
_sql:='insert into _tableName(EQNUM,DATETIME,'||_tableColumn||') values('||_assetNo||',todate('||_dateTime||','yyyy:MM:dd hh24:mi:ss'),'||_dataValue||')';
execute immediate _sql;
else
_sql:='update '||_tableName||' set '||_tableColumn||'='||_dataValue||' where EQNUM='||_assetNo||' and DATETIME=todate('||_dateTime||','yyyy:MM:dd hh24:mi:ss')';
execute immediate _sql;
end if
end if
end if
create or replace trigger Tig_CNOOC_ZJDC_MAXIMO_ONOFF
after insert or update on CNOOC_ZJDC_MAXIMO_ONOFF
for each row
declare
_cnt INT;
_num INT;
if inserting or updating then
SELECT COUNT(1) INTO _cnt from DC_RALATIONSHIP_TAG where TagName=:new.TAGID and Type=:new.TYPE;
if _cnt>0 then
select count(1) into _num where EQNUM= :new.EQNUM and DATETIME=:new.DATETIME;
if _num=0 then
insert into _tableName(EQNUM,DATETIME)
values(:new.EQNUM,:new.DATETIME);
else
update tab1 set col1=:new.DATAVALUE where EQNUM=:new.EQNUM and DATETIME=:new.DATETIME;
end IF;
end IF;
end IF;
END;
CREATE OR REPLACE TRIGGER tig_cnooc_zjdc_maximo_onoff
AFTER INSERT OR UPDATE
ON cnooc_zjdc_maximo_onoff
FOR EACH ROW
DECLARE
v_assetno VARCHAR2 (100);
v_datetime DATE;
v_tagname VARCHAR2 (400);
v_datavalue NUMBER (15, 3);
v_type VARCHAR2 (10);
v_tablename VARCHAR2 (50);
v_tablecolumn VARCHAR2 (50);
v_num NUMBER;
v_sql VARCHAR2 (2000);
v_cnt NUMBER;
BEGIN
v_tagname := :NEW.tagid;
v_datavalue := :NEW.datavalue;
v_type := :NEW.TYPE;
v_assetno := :NEW.eqnum;
v_datetime := :NEW.datetime;
SELECT COUNT (tagname), tagname, tablename
INTO v_cnt, v_tablename, v_tablecolumn
FROM dc_ralationship_tag
WHERE tagname = v_tagname AND TYPE = v_type;
IF v_cnt > 0
THEN
v_sql :=
'select count(*) from '
|| v_tablename
|| ' where EQNUM=:1 and DATETIME=:2';
EXECUTE IMMEDIATE v_sql
INTO v_num
USING v_assetno, v_datetime;
IF v_num = 0
THEN
v_sql :=
'insert into '
|| v_tablename
|| '(EQNUM,DATETIME,'
|| v_tablecolumn
|| ') values(:1,:2,:3)';
EXECUTE IMMEDIATE v_sql
USING v_assetno, v_datetime, v_datavalue;
ELSE
v_sql :=
'update '
|| v_tablename
|| ' set '
|| v_tablecolumn
|| '=:1 where EQNUM=:2 and DATETIME=:3';
EXECUTE IMMEDIATE v_sql
USING v_datavalue, v_assetno, v_datetime;
END IF;
END IF;
END;
CREATE OR REPLACE TRIGGER trg_del_emp_info
BEFORE DELETE
ON emp
FOR EACH ROW
DECLARE
-- local variables here
BEGIN
INSERT INTO emp3(autoid,deptno,empno,ename,del_rq)
VALUES(seq_trg_del_autoid.NEXTVAL,:OLD.deptno,:OLD.empno,:OLD.ename,sysdate);
END trg_del_emp_info;
create or replace trigger Tig_CNOOC_ZJDC_MAXIMO_ONOFF
after update,insert on CNOOC_ZJDC_MAXIMO_ONOFF
for each row
declare
-- local variables here
begin
if inserting or updating then
--event
end if;
end Tig_CNOOC_ZJDC_MAXIMO_ONOFF;