You can use the same variable name for multiple levels of anonymous blocks.
Only local variables are visible:
declare
v_str1_tx VARCHAR2(10);
begin
declare
v_str1_tx VARCHAR2(2);
begin
v_str1_tx:='ABC'; -- INVALID
v_str1_tx:='AB'; -- valid
end;
v_str1_tx:='ABC'; -- valid
end;
Because variable V_STR1_tx is declared in both blocks, in the inner block only the local one is visible.
You can assign only a two-character value to it.
Outside the inner block, you can assign up to a ten-character value to the variable because now the visible variable V_STR1_txis of type VARCHAR2(10).