用两个游标写存储过程
写了个大概,然后报错是错误:PLS-00103: Encountered the symbol "year_id,month_id,day_id" when expecting one of the following:
begin function package pragma procedure subtype type use
<an identifier> <a double-quoted delimited-identifier> form
current cursor
。 题目要求是第一个游标里放switch_id,范围是570到580,第二个游标是日期,根据日期的变化循环,num_cdr的合计,相邻两天num_cdr的差,还有差的百分比。希望大神能够指导 还有很多问题想咨询。qq:506241488
create or replace procedure p_sjm_p
as
declare SWITCHid number(10);
declare date_id:='year_id,month_id,day_id';
declare sum_cdr,cha_cdr,chayi_cdr number(10);
begin
sjm_cur cursor FOR SELECT switch_id FROM sjm_to_f1_sett_hq;
date_cur cursor FOR SELECT date_id,sum(num_cdr) FROM WHERE switch_id=SWITCHid group by switch_id;
OPEN sjm_cur;
sjm_loop: LOOP
FETCH sjm_cur into SWITCHid;
if SWITCHid<570 or SWITCHid>580;
leave sjm_loop;
dbms_output_line('区号:'||SWITCHid)
OPEN date_cur;
date_loop: LOOP
FETCH date_cur INTO sum_cdr,cha_cdr,chayi_cdr;
IF date_id>(sysdate-10) THEN
LEAVE date_loop;
END IF;
if (sysdate-10)<date_id<(sysdate-1) THEN
set sum(num_cdr)=sum_cdr;
set cha_cdr=(b.num_cdr -a.num_cdr);
set chayi_cdr=to_char(round(b.num_cdr - a.num_cdr) / a.num_cdr, 2) * 100) || '%' 差异;
else
set date_id=date_id+1;
set cha_cdr=(b.num_cdr -a.num_cdr);
set chayi_cdr=to_char(round(b.num_cdr - a.num_cdr) / a.num_cdr, 2) * 100) || '%' 差异;
end if;
END LOOP date_loop;
dbms_output.put_line('话单总数:'||sum_cdr||'话单差:'||cha_cdr||'话单差异:'||chayi_cdr);
CLOSE date_cur;
END LOOP sjm_loop;
CLOSE sjm_cur;
END;