哪位老大能帮我看看这个存储过程,在游标这老报错
create or replace procedure srbz_qf_fx_test_p(the_month in varchar2 )
as
  v_sqlstring  varchar2(4000);
  time_begin date;
  time_end date;
  over_time number;
  sql_cnt number;
  n_System_Error     Number;  ---oracle错误编号
  avc_err_text      varchar2(2000); ---oracle错误描述
  oper_table number;
  cur_month varchar2(6);
  
  temp_month varchar2(6);
  
  loop_number number;
  
begin  select to_number(months_between(to_date(''||the_month||'','YYYYMM'),to_date('200806','YYYYMM'))+1) into loop_number 
from dual;v_sqlstring :=
'create table srbz_month_flag_t
(
  ACCT_MONTH         CHAR(6)
 )';
execute immediate  v_sqlstring;
commit;for   i   in   0..loop_number   loop 
      temp_month := null;
      select substr(to_char(add_months(to_date(''||the_month||'','yyyymm'),-(loop_number - i)),'yyyyMMdd HH24:mi:ss'),1,6) into temp_month  from dual;
  
      v_sqlstring :=
                  'insert into srbz_month_flag_t
                  select temp_month from dual';
                  execute immediate  v_sqlstring;
                  commit;
end loop;CURSOR CUR_SEQ IS    select acct_month
   from srbz_month_flag_t;select sysdate into time_begin from dual;end srbz_qf_fx_test_p;先谢谢啦

解决方案 »

  1.   

    cursor定义的时候你的SRBZ_MONTH_FLAG_T表还没有创建哪,当然编译procedure的时候会报错了!
      

  2.   

    show error ,然后贴具体的错误
      

  3.   

    CURSOR CUR_SEQ IS   select acct_month 
      from srbz_month_flag_t; select sysdate into time_begin from dual; 这个地方错了,可以ref cursorv_cur sys_refcursor;
    begin
       ...
       open v_cur for 'select acc_month from srbz_month_flag_t';
       ..
    end;