I gotto go with Jack on this one... use a Tally table instead of a While loop. In fact, here's an article on what a Tally table is and how it can be used to replace While loops...
http://www.sqlservercentral.com/articles/TSQL/62867/
The last part of that article tells you how to do a "split".
For much more detail on how to do both simple split's and how to pass arrays as parameters, here's a different article...
http://www.sqlservercentral.com/articles/T-SQL/63003/
--Jeff Moden
Change is inevitable... Change for the better is not.