As Tom suggests, temp tables seem not to work so I've created and dropped a normal table, I've posted my complete code below incase it'll help anyone else.
USE [misc]
GO
/****** Object: StoredProcedure [dbo].[sp_50NewPostcodes] Script Date: 11/04/2013 10:28:34 ******/
SET ANSI_NULLS OFF
GO
SET QUOTED_IDENTIFIER OFF
GO
Alter PROCEDURE [dbo].[sp_50NewPostcodestemp]
AS
IF OBJECT_ID('Results') IS NOT NULL DROP TABLE Results
CREATE table Results(
postcode varchar(10),streets varchar(2000))
;
with cte as
( SELECT TOP 50 postcode,streets FROM postcodes TABLESAMPLE (0.1 percent) WITH (ROWLOCK, UPDLOCK)
where Streets is null ORDER BY newid())
update cte SET streets = 'Picked up'
output inserted.*
into Results