You could do something like:
create table #tables (table_name varchar(80), completed datetime)
insert #tables
SELECT TABLE_NAME, null
FROM INFORMATION_SCHEMA.TABLES
WHERE TABLE_TYPE = 'BASE TABLE'
while exists (select table_name from #tables where completed is null)
begin
select top 1 @table = table_name from #tables where completed is null
... exec code
update #tables
set completed = getdate()
where table_name = @table
end
Use this to drive your system. Not sure it's much better than a cursor, but if you change #tables to some permanent table, you can track when things are happening, even restart if the job fails with a new table.