Dokładnie to, co mówi:
'name1'
ma inny typ danych niż 'name' + CAST((rn+1) as varchar(255))
Spróbuj tego (nieprzetestowane)
;with cte as
(
select 1 as rn, CAST('name1' as varchar(259)) as nm
union all
select rn+1,nm = 'name' + CAST((rn+1) as varchar(255))
from cte a where rn<10)
select * from cte
Zasadniczo musisz upewnić się, że długość też się zgadza. W przypadku bitu rekurencyjnego może być konieczne użycie CAST('name' AS varchar(4))
jeśli znowu się nie powiedzie