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

Popular posts from this blog

matlab - Deleting rows with specific rules -

php - MySQLi multi_query results for later use -