I think after the function is created, you executed it once.
I am not getting the wrong answer in 9iR2.
See below:
Code:
SQL> select * from F1 ;

       COL REMARK
---------- ------------------------------
         1 one
         2 two
         3 three
         4 four

SQL> set autocommit on
SQL> select a.*, upd_col() as abc from F1 a ;
select a.*, upd_col() as abc from F1 a
            *
ERROR at line 1:
ORA-14551: cannot perform a DML operation inside a query
ORA-06512: at "TAMIL.UPD_COL", line 5


SQL> select * from F1 ;

       COL REMARK
---------- ------------------------------
         1 one
         2 two
         3 three
         4 four
Tamil