Analytic functions are not supported in Oracle8i (actually from 8.1.6 onwards) in PL/SQL blocks or stored procedures. They are supported from Oracle9i. Two work around are possible:
1) Use RANK() in dynamic SQL in your PL/SQL program unit or
2) Create a view using the RANK()in your SQL query and then use the view in your PL/SQL program unit.