Could Not Be Accessed Value Of The For Loop Counter In PL/SQL
The problem is that the variable a that you declare in your declaration section is not the same as the variable a that is declared in the context of your loop.  You've declared two different variables named a with different scope.

If you run your block without a declaration section, you'll notice that it works even though you aren't declaring a variable a in the declaration section.  When you write a for loop, your counter is implicitly declared and is in scope only within the loop.  After the end loop, you can no longer reference the variable.

BEGIN
   FOR a IN REVERSE 10 .. 20 LOOP
      dbms_output.put_line('value of a: ' || a);
   END LOOP;
END;


If you want to explicitly declare the variable you are using in your loop and you want to be able to reference the variable outside the loop, you could write a while loop

declare
  i integer;
begin
  i := 20;
  while i &gt;= 10
  loop
    dbms_output.put_line( 'In loop: ' || i );
    i := i - 1;
  end loop;
  dbms_output.put_line( 'Final value: ' || i );
end;