【发布时间】:2018-02-10 18:56:55
【问题描述】:
我有以下代码摘录,它将使用触发器和触发器调用的存储过程将数据插入三个表中。触发器和过程都已成功编译。
CREATE OR REPLACE TRIGGER trigger_insert_attr AFTER
INSERT ON BSCS_WORK_SYNC_INFO FOR EACH ROW BEGIN
bscs_rateplan_sync(:new.project_id , :new.tmcode);
update BSCS_WORK_SYNC_INFO set comp_date=SYSDATE where
project_id=:new.project_id;
END trigger_insert_attr;
/
CREATE OR REPLACE
PROCEDURE bscs_rateplan_sync
(
tmcode_list IN VARCHAR2,
project_id IN VARCHAR2
)
AS
BEGIN
EXECUTE IMMEDIATE 'delete from ecm_mpulktm1 where
project_id='||project_id ;
EXECUTE IMMEDIATE 'delete from ecm_mpulktm2 where
project_id='||project_id ;
EXECUTE IMMEDIATE 'delete from ecm_fup_tariff_work where
project_id='||project_id ;
EXECUTE immediate 'insert into ecm_mpulktm1 select '||project_id||' , m1.*
from sysadm.mpulktm1@to_bscsprd_rpt m1 where tmcode in
('||tmcode_list||')'
;
EXECUTE immediate 'insert into ecm_mpulktm2 select '||project_id||' , m1.*
from sysadm.mpulktm2@to_bscsprd_rpt m1 where tmcode in
('||tmcode_list||')'
;
EXECUTE immediate 'insert into ecm_fup_tariff_work select '||project_id||'
, m1.* from sysadm.fup_tariff_work@to_bscsprd_rpt m1 where tmcode in
('||tmcode_list||')' ;
END;
/
但是当数据被插入到表 BSCS_WORK_SYNC_INFO 中时,我得到了 以下错误:
SQL 错误:ORA-00933:SQL 命令未正确结束 ORA-06512: 在“ECMREPORT.BSCS_RATEPLAN_SYNC”,第 6 行 ORA-06512: 在“ECMREPORT.TRIGGER_INSERT_ATTR”,第 2 行 ORA-04088: 执行触发器 'ECMREPORT.TRIGGER_INSERT_ATTR' 期间出错
有人可以帮助解决错误吗?我对 PL/SQL 比较陌生,因此需要帮助来解决上述错误。表 BSCS_WORK_SYNC_INFO 中的数据将由 Web 服务填充。还有程序执行后表中要更新的数据。
【问题讨论】:
-
请向我们展示进入触发器的
:new.tmcode的一些值。
标签: oracle stored-procedures oracle11g