• wouldn't

    declare @result varchar(max);

    select @result = coalesce(@result + ',' + value,value) from @codes;

    select @result;

    be a lot simpler?