Try this:
CREATE OR REPLACE FUNCTION f_rank (USERID IN number) RETURN NUMBER DETERMINISTIC IS
nRank number;
BEGIN
SELECT SUM(DECODE(a.rank, 'SU', 25, 'EX', 9, 'VG', 5, 'G', 3, 'F',1) * b.tokens) / SUM(b.tokens)
INTO nRank
FROM a JOIN b ON a.GameID = b.GameID
WHERE
para_userid = USERID;
RETURN nRank;
END f_rank;
DECLARE
x number;
BEGIN
x := f_rank(&USERID);
DBMS_OUTPUT.PUT_LINE('User Ranking is: '||x);
END;
/