oracle存储过程问题,急急急!!!
create or replace procedure calculate_agent_js_fee()
is
f_num number;
j number;
v_actfee agent_js_fee_table.actfee%type;
r_num number;
r number;
v_level_fee agent_js_rate.level_fee%type;
v_rate agent_js_rate.rate%type;
v_min_level_fee agent_js_rate.level_fee%type;
begin
create sequence table_num increment by 1 start with 1;
create table agent_js_fee_temp_table
as
select
table_num.nextval table_num,
agent_js_fee_table.s_agent,
agent_js_fee_table.agentname,
agent_js_fee_table.actfee,
agent_js_fee_table.fee_level,
agent_js_fee_table.js_rate,
agent_js_fee_table.js_fee,
agent_js_fee_table.p_mk,
agent_js_fee_table.cntperiodid
from (select s_agent,
agentname,
actfee,
fee_level,
js_rate,
js_fee,
p_mk,
cntperiodid
from agent_js_fee_table
)agent_js_fee_table
;
create index agent_js_fee_temp_table$s_agent
on agent_js_fee_temp_table(s_agent);
create index agent_js_fee_temp_table$actfee
on agent_js_fee_temp_table(actfee);
create index agent_js_fee_temp_table$cntperiodid
on agent_js_fee_temp_table(cntperiodid);
create index agent_js_fee_temp_table$fee_level
on agent_js_fee_temp_table(fee_level);
create index agent_js_fee_temp_table$js_rate
on agent_js_fee_temp_table(js_rate);
create index agent_js_fee_temp_table$js_fee
on agent_js_fee_temp_table(js_fee);
create index agent_js_fee_temp_table$p_mk
on agent_js_fee_temp_table(p_mk);
select max(table_num) into f_num
from agent_js_fee_temp_table;
create sequence rate_num increment by 1 start with 1;
create table agent_js_rate_temp
as
select
rate_num.nextval rate_num,
agent_js_rate.rate_id,
agent_js_rate.level_fee,
agent_js_rate.rate,
agent_js_rate.create_time
from (select rate_id,
level_fee,
rate,
create_time
from agent_js_rate
)agent_js_rate
;
select max(rate_num) into r_num
from agent_js_rate_temp;
<<js_fee>>
for j in 1..f_num loop
select agent_js_fee_table.actfee into v_actfee
from agent_js_fee_table,agent_js_fee_temp_table
where agent_js_fee_temp_table.table_num=j
and agent_js_fee_table.v_actfee=agent_js_fee_temp_table.v_actfee;
<<js_rate>>
for r in 1..r_num loop
select agent_js_rate.level_fee into v_level_fee
from agent_js_rate,agent_js_rate_temp
where agent_js_rate_temp.rate_num=r
and agent_js_rate.v_level_fee=agent_js_rate_temp.v_level_fee;
select agent_js_rate.rate into v_rate
from agent_js_rate,agent_js_rate_temp
where agent_js_rate_temp.rate_num=r
and agent_js_rate.v_level_fee=agent_js_rate_temp.v_level_fee;
select min(level_fee) into r_min_level_fee
from agent_js_rate;
if v_actfee<v_level_fee then
if v_actfee<v_min_level_fee then
update agent_js_fee_table
set js_rate=0
where agent_js_fee_temp_table.table_num=j
and agent_js_fee_table.v_actfee=agent_js_fee_temp_table.v_actfee;
update agent_js_fee_table
set js_fee=0
where agent_js_fee_temp_table.table_num=j
and agent_js_fee_table.v_actfee=agent_js_fee_temp_table.v_actfee;
update agent_js_fee_table
set fee_level=v_level_fee
where agent_js_fee_temp_table.table_num=j
and agent_js_fee_table.v_actfee=agent_js_fee_temp_table.v_actfee;
exit;
else
null;
end if;
else
update agent_js_fee_table
set js_rate=v_rate
where agent_js_fee_temp_table.table_num=j
and agent_js_fee_table.v_actfee=agent_js_fee_temp_table.v_actfee;
update agent_js_fee_table
set js_fee=actfee*v_rate
where agent_js_fee_temp_table.table_num=j
and agent_js_fee_table.v_actfee=agent_js_fee_temp_table.v_actfee;
update agent_js_fee_table
set fee_level=v_level_fee
where agent_js_fee_temp_table.table_num=j
and agent_js_fee_table.v_actfee=agent_js_fee_temp_table.v_actfee;
goto js_fee;
end if;
end loop;
end loop;
drop index agent_js_fee_table$s_agent;
drop index agent_js_fee_table$actfee;
drop index agent_js_fee_table$cntperiodid;
drop index agent_js_fee_table$fee_level;
drop index agent_js_fee_table$js_rate;
drop index agent_js_fee_table$js_fee;
drop index agent_js_fee_table$p_mk;
drop sequence table_num;
drop table agent_js_fee_temp_table;
drop sequence rate_num;
drop table agent_js_rate_temp;
commit;
end;
提示如下信息:MGR-00072: Warning: PROCEDURE CALCULATE_AGENT_JS_FEE created with compilation errors.
我用的是oracle8.0.6
不知是何原因???