I would stick with the SELECT INTO personally, and handle NO_DATA_FOUND etc as suggested above. The explicit ref cursor approach is just more complication.