plsql - getting ORA-06550 error -
declare type v_year_arr varray(100) of emps%rowtype; v_deptid emps.department_id%type :=90; v_rem1 number(5,2); v_rem2 number(5,2); v_rem3 number(5,2); v_year v_year_arr; begin select * bulk collect v_year emps department_id = v_deptid; v_rem1 := mod(v_year.yof,4); v_rem2 := mod(v_year.yof,100); v_rem3 := mod(v_year.yof,400); i..v_year loop if (v_rem1=0 , v_rem2=0 , v_rem3=0) dbms_output.put_line('leap year :'||v_year.yof); else dbms_output.put_line('not leap year :'||v_year.yof) end if; end loop; end;
i think you'd better off writing using cursor loop, in:
declare v_deptid emps.department_id%type :=90; v_rem1 number(5,2); v_rem2 number(5,2); v_rem3 number(5,2); begin arow in (select * emps department_id = v_deptid) loop v_rem1 := mod(arow.yof,4); v_rem2 := mod(arow.yof,100); v_rem3 := mod(arow.yof,400); if (v_rem1=0 , v_rem2<>0) or (v_rem2=0 , v_rem3=0) dbms_output.put_line('leap year :'||arow.yof); else dbms_output.put_line('not leap year :'||arow.yof) end if; end loop; end; this eliminates potential problem of having more 100 rows returned select...bulk collect into... statement. took liberty of correcting leap year determination.
share , enjoy.
Comments
Post a Comment