2011-02-16 26 views
0

什麼是錯在下面的CTE

;with cte as 
(
select rn=1, name = CAST('name'as varchar(50)) 
union all 
select rn+1, CAST(name as varchar(50))+ CAST((rn+1) as varchar(50)) 
from cte where rn<100) 

select * from cte 

錯誤

消息240,級別16,狀態1,行 類型不錨和遞歸部分之間的匹配遞歸查詢「cte」的列「名稱」。

回答

1

嘗試像

;with cte as 
(
select rn=1, 
     name = CAST('name'as varchar(100)) 
union all 
select rn+1, 
     CAST(name as varchar(50))+ CAST((rn+1) as varchar(50)) 
from cte where rn<100) 

select * from cte 

你要記住的是,在錨和遞歸部分的所有字段必須是同一類型。這也適用於varchar字段。

+0

因此它的錨點和遞歸部分的數據類型長度也應該匹配 – user1 2011-02-16 13:26:55