I'm trying to print on screen odd values of an associative array using a simple "WHILE LOOP" with MOD condition. Is it possible? I know that PLS_INTEGER only accept not decimal values (like int datatype on Java). So... I tried with a NUMBER counter but I receive the same results. How Can I resolve it? . Thanks
SET SERVEROUTPUT ON
DECLARE
TYPE type_test IS TABLE OF VARCHAR2(45)
INDEX BY PLS_INTEGER;
t_test_5 type_test;
v_counter_1 PLS_INTEGER;
v_counter_2 NUMBER;
BEGIN
t_test_5(1) := 'Test1';
t_test_5(2) := 'Test2';
t_test_5(3) := 'Test3';
t_test_5(4) := 'Test4';
t_test_5(5) := 'Test5';
t_test_5(6) := 'Test6';
t_test_5(7) := 'Test7';
t_test_5(8) := 'Test8';
t_test_5(9) := 'Test9';
t_test_5(10) := 'Test10';
DBMS_OUTPUT.PUT_LINE('PLS_INTEGER COUNTER TEST');
v_counter_1 := t_test_5.FIRST;
WHILE MOD(v_counter_1, 2) <> 0
LOOP
DBMS_OUTPUT.PUT_LINE(t_test_5(v_counter_1));
v_counter_1 := t_test_5.NEXT(v_counter_1);
END LOOP;
DBMS_OUTPUT.PUT_LINE(' ');
DBMS_OUTPUT.PUT_LINE('NUMBER COUNTER TEST');
v_counter_2 := t_test_5.FIRST;
WHILE MOD(v_counter_2, 2) <> 0
LOOP
DBMS_OUTPUT.PUT_LINE(t_test_5(v_counter_2));
v_counter_2 := t_test_5.NEXT(v_counter_2);
END LOOP;
END;
I want to retrieve on screen the values 1, 3, 5, 7, 9 but in both situations I only retrieve value 1:
Procedimiento PL/SQL terminado correctamente.
PLS_INTEGER COUNTER TEST
Test1
NUMBER COUNTER TEST
Test1