暂无图片
Oracle 批量执行SQL 编译存储过程 ,怎么操作?
我来答
分享
Hklopp
2022-01-25
Oracle 批量执行SQL 编译存储过程 ,怎么操作?

Oracle 批量执行SQL 编译存储过程 ,怎么操作?

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
Thomas

可以用一段PLSQL BLOCK实现,例如下面就是编译当前用户所属的各个OBJECT(PACKAGE/TRIGGER/FUNCTION/TYPE等):

declare
ls_sql varchar2(100);
begin
DBMS_OUTPUT.ENABLE (buffer_size=>null);
for ca in (select object_name,object_type from user_procedures where procedure_name is null
union
select distinct object_name,object_type from user_procedures where
procedure_name is not null) loop
ls_sql:='alter '||ca.object_type||' '||ca.object_name||' '||'compile';
dbms_output.put_line(ls_sql);
execute immediate ls_sql;
end loop;
end;
/

暂无图片 评论
暂无图片 有用 1
暂无图片
Hklopp
题主
2022-01-25
感谢
DarkAthena

你的sql是存在于多个外部文件?还是说只是要编译数据库已存在的对象而不去对代码进行修改?

如果是存在于多个外部文件,你把文件名做一个清单放到一个文本文件里,每个文件前面加上一个@,然后连接sqlplus后,@这一个文本文件就好了

暂无图片 评论
暂无图片 有用 0
回答交流
提交
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~
暂无图片墨值悬赏