No need to create a table in SQL use a temp table in the stored proc. If you need to pass in the zips as string use this. If you have a table valued parameter you can pass them in as a table.
CREATE PROCEDURE spCheckZip
@Zips varchar(256) --space delimited list of zips
AS
IF OBJECT_ID('tempdb..#ZipCheck') IS NOT NULL
DROP TABLE #ZipCheck
CREATE TABLE #ZipCheck (zipcode string) --Note string not int for zips with leading 0's.
IF CharIndex(' ',@Zips) > 1
BEGIN
Declare @StartPos as int
Declare @ZipCd As Varchar(16)
set @StartPos = 2
set @ZipCd = substring(@Zips,1,CharIndex(',',@Zips))
WHILE @StartPos > 1 and @StartPos < Len(@Zips)
BEGIN
INSERT Into #ZipCheck (zipcode)
SELECT Substring(@ZipCd,1,len(@ZipCd)-1)
SET @StartPos = charindex(',',@Zips, @StartPos)+1
SET @ZipCd = substring(@Zips,@StartPos,CharIndex(',',@Zips))
END
END
SELECT ZipCode
FROM ZipCheck LEFT JOIN YourZipTable on ZipCheck.zipcode=YourZipTable.YourZipField
WHERE YourZipTable.YourZipField IS NULL