Hi,
There's no need for a loop. You just need to use a Tally Table. To know what it is and how it replaces a loop, read the following: http://www.sqlservercentral.com/articles/T-SQL/62867/
With your tally table, your code would end like this:
INSERT INTO BC
SELECT '001',
'teste',
RIGHT( '000' + CAST( n AS varchar(4)), 4)
FROM dbo.Tally
WHERE n <= 9999