簡化前:
sql 代碼
- Create Or Replace Trigger tr_cust_order
- AFTER UPDATE
- ON te_cust_order
- FOR EACH ROW
- WHEN (NEW.status=6)
- DECLARE
- exhok NUMBER;
- exhid NUMBER;
- regok NUMBER;
- seqexh NUMBER;
- sql_stat varchar2(200);
- BEGIN
- --判斷是否爲展覽訂單
- DECLARE
- CURSOR emp_cursor IS
- SELECT service_item_id FROM te_cust_order
- WHERE service_item_id IN
- (SELECT t.id FROM te_cust_service_item t WHERE t.service_type_id IN (2,3,4) );
- emp_record emp_cursor%ROWTYPE;
- BEGIN
- OPEN emp_cursor;
- LOOP
- FETCH emp_cursor INTO emp_record;
- exit when emp_cursor%NOTFOUND;
- if emp_record.service_item_id = :old.SERVICE_ITEM_ID then
- exhok := 1;
- end if;
- END LOOP;
- CLOSE emp_cursor;
- END;
- if exhok != 1 then
- return;
- end if;
- --取得展覽ID
- exhid := 0;
- DECLARE
- CURSOR exh_cursor IS
- SELECT exh_id FROM te_exh_order
- WHERE order_no = :new.order_no;
- exh_record exh_cursor%ROWTYPE;
- BEGIN
- OPEN exh_cursor;
- LOOP
- FETCH exh_cursor INTO exh_record;
- exit when exh_cursor%NOTFOUND;
- exhid := exh_record.exh_id ;
- END LOOP;
- CLOSE exh_cursor;
- END;
- if exhid < 1 then
- return;
- end if;
- --判斷是否已經報名了
- regok := 0;
- SELECT count(*) INTO regok FROM teexhibitiontomember
- WHERE EXHIBITIONID = exhid and CUSTOMERNO = :new.CUSTOMER_NO;
- if regok >0 then
- return;
- end if;
- --增加報名記錄
- select teexhibitionmemberseq.nextval into seqexh
- from teexhibitiontomember t where rownum = 1;
- sql_stat := 'insert into teexhibitiontomember(ID,MEMBERID,EXHIBITIONID,CUSTOMERNO) values ('
- || seqexh || ',0,' ||exhid||','''|| :new.CUSTOMER_NO||''')';
- execute immediate sql_stat;
- END tr_cust_order;
簡化後:
sql 代碼
- /*==============================================================*/
- /* Trigger: tr_cust_order */
- /*==============================================================*/
- Create Or Replace Trigger tr_cust_order
- AFTER UPDATE ON te_cust_order
- FOR EACH ROW
- WHEN (NEW.status = 6)
- DECLARE
- exhid NUMBER;
- regok NUMBER;
- seqexh NUMBER;
- sql_stat varchar2(200);
- BEGIN
- --取得展覽ID
- SELECT exh_id
- into exhid
- FROM te_exh_order
- WHERE order_no = :new.order_no;
- if exhid < 1 then
- return;
- end if;
- --判斷是否已經報名了
- regok := 0;
- SELECT count(*)
- INTO regok
- FROM teexhibitiontomember
- WHERE EXHIBITIONID = exhid
- and CUSTOMERNO = :new.CUSTOMER_NO;
- if regok > 0 then
- return;
- end if;
- --增加報名記錄
- select teexhibitionmemberseq.nextval into seqexh from dual;
- sql_stat := 'insert into teexhibitiontomember(ID,MEMBERID,EXHIBITIONID,CUSTOMERNO) values (' ||
- seqexh || ',0,' || exhid || ',''' || :new.CUSTOMER_NO ||
- ''')';
- execute immediate sql_stat;
- END tr_cust_order;