电脑技术学习

关于SQL Server 2000对XML支持的一些见解

dn001

关于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 auto
2、尽量不要对显示的字段作任何运算与处理,因为这样会破坏基本表(视图)的数据作为某一层数据的约定。
比如对"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