注册

触发器如何执行存储过程

白龙马 2025/01/14 252 1

为提高效率,提问时请提供以下信息,问题描述清晰可优先响应。
【DM版本】:8
【操作系统】:win10
【CPU】:inter
【问题描述】*:触发器如何执行存储过程

Oracle 的触发器如下:
create or replace trigger s_menu_data_trigger
FOR INSERT OR DELETE on s_menu_data
compound TRIGGER

AFTER STATEMENT IS -- 语句执行后触发(表级)
BEGIN
DBMS_OUTPUT.put_line('4、AFTER STATEMENT .');
reset_role_data;
END AFTER STATEMENT;

end s_menu_data_trigger;

-- 迁移到达梦时保存,是不支持 复合触发器吗?

--备注:执行的存储过程如下:
CREATE OR REPLACE PROCEDURE reset_role_data
IS
--PRAGMA AUTONOMOUS_TRANSACTION;
BEGIN

-- 这里放置处理数据的代码
NULL; -- 示例中,我们不执行任何操作

for rec in ( select crole,cdata,hrole,hdata from role_data_join_v ) loop
if rec.crole is null then
--当前角色插入数据对象
dbms_output.put_line('A 当前角色插入数据对象...');
insert into s_role_data (pf_role,pf_data) values (rec.hrole,rec.hdata);
end if;

if rec.hrole is null then
--当前角色删除数据对象
dbms_output.put_line('B 当前角色删除数据对象...');
delete from s_role_data where pf_role = rec.crole and pf_data = rec.cdata;
end if;
end loop;

--提交数据操作
--commit;

END;

回答 0
暂无回答
扫一扫
联系客服