Exactement ce qu'il dit :
'name1'
a un type de données différent de 'name' + CAST((rn+1) as varchar(255))
Essayez ceci (non testé)
;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
Fondamentalement, vous devez également vous assurer que la longueur correspond. Pour le bit récursif, vous devrez peut-être utiliser CAST('name' AS varchar(4))
s'il échoue à nouveau