SQL Server 2005【筆記】WOW! CTE可在SQL Server 2000上執行?

SQL Server 2005【筆記】WOW! CTE可在SQL Server 2000上執行?

Article: Amazing! CTE execute on SQL Server 2000?

令人驚訝的一件事情,對小弟來說是覺得十分神奇!

CTE是SQL Server 2005的一個新的TSQL語法(可點此參考:Common Table Expressions (CTE) on SQL 2005),過去在SQL Server 2000時代處理遞迴時是一個惱人的問題,但透過CTE,就可以很容易的處理這個需求!

只是沒想到,因為專案其中一個部份需要透過CTE語法來撈資料,之前將Source DB轉到SQL Server 2005上,所以很自然的使用CTE撈此Source DB的rowdata;後來因應需求,得將Source指到原來的SQL Server 2000去!

很自然的,建立了Linked Server,改寫SQL的SELECT… FROM語法,直接指向Linked Server,執行成功了,資料轉入了!一開始還沒發現,昨天猛然想到,我使用CTEㄟ,SQL 2000可以執行嗎?

回頭去看,真的覺得很神奇,透過Linked Server的方式,竟可將CTE語法丟到SQL 2000去執行!為了再證實,將此語法使用SQL 2000 Query Analyzer執行,發現是不可以的!

有沒朋友可以解釋一下箇中奧秘阿… XD

以下僅列出部分程式片段與圖片:

下面這段程式主要是將CTE的結果存入一個暫存資料表,而要將CTE結果存入暫存資料表,得使用EXECUTE (' …')的方式,可參考此篇SQL Server 2005【筆記】T-SQL CTE & Insert

LinkedDB是Linked Server的名字,完整的語法是Linked Server名稱.資料庫名稱.擁有者名稱.資料表名稱

使用SQL Server 2000的Query Analyzer執行失敗