I would go with your second option, but include a stopkey to ensure it doesn't fail if it returns more than one row. That would make it logically equivalent to the other statement.
v_param VARCHAR2 (10);
WHERE rownum <= 1; -- this is the stopkey
From a performance perspective, I wouldn't expect much of a difference, unless the original query actually selects back lots of data only to then report the first result and ignore the rest. The revised query will ensure that Oracle only goes for a single row, resulting in less IO.