|
还有问题:下面的为什么整个循环中v_num值都不变?
v_ym_begin:=to_date(p_ym_begin,'YYYY-MM-DD');
DBMS_OUTPUT.PUT_LINE(v_ym_begin);
v_ym_end:=to_date(p_ym_end,'YYYY-MM-DD');
v_datevalue:=v_ym_begin;
v_betweenmonths:=months_between(v_ym_end,v_ym_begin);
v_months:=0;
DBMS_OUTPUT.PUT_LINE(v_betweenmonths);
while v_months <= v_betweenmonths loop
if(v_months > 0) then
v_datevalue:=add_months(v_datevalue,1);
end if;
dbms_output.enable;
DBMS_OUTPUT.PUT_LINE(to_char(v_datevalue));
DBMS_OUTPUT.PUT_LINE(to_char(v_months));
v_months:=v_months+1;
delete from tb_insmannum where last_day(to_date(y_month))=last_day(to_date(v_datevalue));
commit;
v_cursor2:=DBMS_SQL.OPEN_CURSOR;
v_cursor3:=DBMS_SQL.OPEN_CURSOR;
DBMS_SQL.PARSE(v_cursor2,v_insertstmt,DBMS_SQL.V7);
DBMS_SQL.PARSE(v_cursor3,v_sestmt2,DBMS_SQL.V7);
DBMS_SQL.BIND_ARRAY(v_cursor2,':imi_value',v_id,1,v_numrows);
DBMS_SQL.BIND_ARRAY(v_cursor3,':insman_value',v_name,1,v_numrows);
DBMS_SQL.BIND_VARIABLE(v_cursor3,':date_value',v_datevalue);
DBMS_SQL.BIND_VARIABLE(v_cursor2,':ym_value',v_datevalue);
DBMS_SQL.BIND_ARRAY(v_cursor2,':insname_value',v_name);
DBMS_SQL.DEFINE_COLUMN(v_cursor3,1,v_num);
v_dummy2:=DBMS_SQL.EXECUTE(v_cursor3);
v_numrows2:=DBMS_SQL.FETCH_ROWS(v_cursor3);
DBMS_SQL.COLUMN_VALUE(v_cursor3,1,v_num);
DBMS_SQL.BIND_VARIABLE(v_cursor2,':in_value',v_num);
v_dummy2:=DBMS_SQL.EXECUTE(v_cursor2);
DBMS_SQL.CLOSE_CURSOR(v_cursor2);
DBMS_SQL.CLOSE_CURSOR(v_cursor3);
end loop; |
|