请问:编译存储过程是否可以触发日志 因为经常修改存储过程,现在需要做个存储过程版本控制具体的思路是,当存储过程编译的时候,会向监控表插入日志所以请问下我如何在编译完存储过程后,能自动向表中插入存储过程名,编译时间 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 你可以写一个专门用于编译存储过程并插入日志的存储过程,例:参数is_proc_name就是你想编译的存储过程的名字create or replace PROCEDURE compile_test(is_proc_name varchar2)as sqltext varchar2(100) := 'ALTER PROCEDURE ' || is_proc_name || ' COMPILE';begin execute immediate sqltext;--开始编译存储过程 insert into compile_log values (sysdate, 'COMPILE PROCEDURE');--写日志表 commit;exception when others then rollback;end; 我不知道你的“编译”指什么,是create or replace procedure?如果是,那么就创建schema级别触发器create trigger tri_t after create on schemadeclarebegin dbms_output.put_line(ora_dict_obj_type); dbms_output.put_line(ora_dict_obj_owner); dbms_output.put_line(ora_dict_obj_name);--里面写你的日志逻辑end; 数据库加密的奇怪问题,请高手解决 insert select 提交问题 怎么办? where a.id in (b.字段名),这种需求用SQL怎么写? 求sql 语句 请教一个视图的问题? 如何在一个表里随机读取N条数据 **首先祝大家中秋快乐,然后请问“包程序写入失败”是什么意思???**谢谢:-) 问题 oracle 错误:ora-01114???(求助高手) ORACLE拆分数据表 求ORACLE安装文件,谢谢
参数is_proc_name就是你想编译的存储过程的名字
create or replace PROCEDURE compile_test(is_proc_name varchar2)
as
sqltext varchar2(100) := 'ALTER PROCEDURE ' || is_proc_name || ' COMPILE';
begin
execute immediate sqltext;--开始编译存储过程
insert into compile_log values (sysdate, 'COMPILE PROCEDURE');--写日志表
commit;
exception when others then
rollback;
end;
create trigger tri_t
after create on schema
declarebegin
dbms_output.put_line(ora_dict_obj_type);
dbms_output.put_line(ora_dict_obj_owner);
dbms_output.put_line(ora_dict_obj_name);
--里面写你的日志逻辑
end;