關于SQL Server 2000對XML支持的一些見解
關于SQL Server 2000對XML支持的一些見解主要針對'select; 字段1,字段2,...,字段n from 表或多表聯合查詢 where 條件 for xml auto'類似語句的討論
本人在使用以上語句生成XML數據時,發現了一些SQL Server 2000生成XML數據的一些規律,給我的感覺是要求太苛刻了,從中也可以看出微軟早期對XML支持的不足.現在就把我的這些體會寫給大家看看,不對不足的地方望大家指出。XML可以很方便地描述樹型結構數據,相對于關系型數據來說,這方面就有點不足。為此從關系型數據轉換到樹型結構數據就比較麻煩。還好,SQL Server 2000提供了這方面的轉換接口。但想轉換好也是有條件的。
前提:SQL Server 2000已經有描述樹型結構數據的基本表(視圖)[如大學里的院系班的樹型結構信息,院信息一個表、系信息一個表、班信息一個表,表之間已經建立了主外鍵關系]
1、要顯示的字段的位置是有順序的,如要正確顯示院系班的樹型結構關系,轉換SQL語句應該這么寫: select 院,系,班 from 院,系,班 where 條件 for xml auto2、盡量不要對顯示的字段作任何運算與處理,因為這樣會破壞基本表(視圖)的數據作為某一層數據的約定。 比如對'select 院,系,班 from 院,系,班 where 條件 for xml auto' 語句的“系”字段作了一些運算與處理后, 則SQL Server 2000無法正確地描述'系'字段生成XML數據后屬于那一層數據。一般情況下,SQL Server 2000會把”系“字段自動加進”院“或”班“一層。這樣就得不到我們想要的結果。3、多表聯合查詢時,不要有子查詢,因為即使你用了子查詢也是沒用的, 'select; 字段1,字段2,...,字段n from 表或多表聯合查詢 where 條件 for xml auto'這樣的轉換語句是只認基本表與視圖的。; 別妄想用子查詢實現一些復雜的功能。
以上是自已在使用'select; 字段1,字段2,...,字段n from 表或多表聯合查詢 where 條件 for xml auto'語句時的一些體會,胡言亂語了一通。
http://blog.csdn.net/cyz1980/archive/2007/07/26/1710010.aspx