It would appear that you want to filter the results if
@storecode
is provided but if it is null then you want the entire table returned.
Probably the easiest/clearest way is this
declare @sql nvarchar(2000)
declare @storecode int = null
SET @sql = 'SELECT * FROM mch '
IF @storecode IS NOT NULL
SET @sql = @sql + 'WHERE storecode = ' + CAST(@storecode as varchar)
The reason that you are not getting anything with your current query is because the use of NULL within the construction of the string renders the entire string NULL.