Modifying a result set in a Stored Procedure, then returning that modified set
Is there a better way of achieving this, or am I on the right track?


Yes there is and no, I don't think you are on the right track. There is almost no reason to use a cursor in this situation.

If ShowLocation is a value on each record in the table then this is the kind of situation where a CASE statement comes in handy.

SQL Server code would be similar to the following

CREATE PROCEDURE dbo.GetLocationData
AS
SELECT
  &lt;all_other_fields_here&gt;,
  CASE 
     WHEN ShowLocation = 1 THEN Location 
     ELSE NULL 
END AS Location
FROM PERMTABLE
WHERE Location within bounds -- not entirely sure how you're doing this
ORDER BY Location;
GO