哪些情况需要重新编译存储过程
答案:2 悬赏:50 手机版
解决时间 2021-03-09 00:48
- 提问者网友:美人性情
- 2021-03-08 11:13
哪些情况需要重新编译存储过程
最佳答案
- 五星知识达人网友:人類模型
- 2021-03-08 11:34
如果是在plsql developer中修改的,可以直接点那个齿轮图标,或者F8即可编译。 如果是在sqlplus中,那就敲入修改后的过程代码(create or replace procedure...),最后以/结尾运行即可。
全部回答
- 1楼网友:神的生死簿
- 2021-03-08 12:22
这是我同事做的一个存储过程,我们一般都用这个处理
create or replace procedure own.p_hsj_compre
is
cursor cur_invalid_obj is
select uo.object_name,uo.object_type
from user_objects uo,
user_order_object_by_depend uobd
where uo.object_id = uobd.object_id(+) and uo.status != 'valid'
order by uobd.dlevel desc,uo.object_type,uo.object_name;
ls_objname varchar2(100);
ls_objtype varchar2(100);
ls_status varchar2(20);
ls_text varchar2(4000);
ls_sql varchar2(100);
begin
open cur_invalid_obj;
loop
fetch cur_invalid_obj into ls_objname,ls_objtype;
exit when cur_invalid_obj%notfound;
if ls_objtype in ('package body', 'package', 'function', 'procedure','trigger', 'view') then
if ls_objtype ='view' then
ls_sql :=' alter view '||ls_objname ||' compile';
execute immediate ls_sql;
else
dbms_ddl.alter_compile(ls_objtype,null,ls_objname);
end if;
select status into ls_status from user_objects
where object_name = ls_objname and object_type = ls_objtype;
end if;
end loop;
close cur_invalid_obj;
exception
when others then
if cur_invalid_obj%isopen then
close cur_invalid_obj;
end if;
end;
/
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯