我现在有一些procedure名称存在一张表中,比如存在表t_proc的proc_name字段中。每次我都要如下重新编译:
alter procedure sp_branch_level_tbl compile;
alter procedure sp_fina_business_info compile;
alter procedure sp_sell_type_tbl compile;
并且每增加一个procedure,我就要调整我的脚本。我想知道是否有办法直接从t_proc中取出proc_name的列表,然后循环执行。但我不知道这样的动态sql该怎么写?谢谢!
alter procedure sp_branch_level_tbl compile;
alter procedure sp_fina_business_info compile;
alter procedure sp_sell_type_tbl compile;
并且每增加一个procedure,我就要调整我的脚本。我想知道是否有办法直接从t_proc中取出proc_name的列表,然后循环执行。但我不知道这样的动态sql该怎么写?谢谢!
cursor c1 is
select column_name
from all_tab_columns
where table_name=upper('t');然后再对你需要的字段进行操作
我现在的需求是这样的:我系统里面所有的procedure都存在一张表中,因为每晚导数据,将一些表先删除,然后再导入,这样就会造成这些procedure失效,所以我想在导数完成后,重新编译这些procedure,现在我是一个个procedure都列出来recompile,但我们的需求会变化,经常会增加一些procedure,每次增加都会将procedure的名称存入那张表中。现在因为我是一个个procedure列出来recompile,所以每次增加,我就要调整这个recompile的脚本,我现在想通过cursor从这张表中取,每取出一个procedure的名称,就recompile,现在我不知道该如何事先,所以请教大家。
begin
for recpro in (select proc_name from t_proc)
loop
execute immediate 'alter procedure ' || recpro.proc_name || ' compile';
end loop;
end;
SELECT
A.OBJECT_NAME
FROM
SYS.ALL_OBJECTS A
WHERE (A.OWNER = '用户名')
AND (A.OBJECT_TYPE = 'PROCEDURE')
然后对这个列表编译就可以了吧
你这个方法没有问题,但是好像无法得到每个procedure执行结果的log。有没有办法得到呢?