SQL Server 2005 For XML[学习]

 

for xml 扩展功能

 

SQL Server 2005 通过 select 语句的 for xml 扩展功能,支持在服务器端以XML 文档的形式返回SQL 查询的结果。

 

语法如下:
select 表1.列名1, 表2.列名2 ...
from 表1,表2
for xml mode

 

其中,mode 指定使用:RAWAUTOEXPLICIT PATH 模式。

(详细内容,查阅MSDN。)

 

创建示例环境:

创建表.sql
use Winform
go

/****** 对象:  Table [dbo].[Person]    脚本日期: 04/25/2010 12:56:29 ******/
create table [dbo].[person]
(
    
[no] [int] not null,
    
[name] [varchar](10not null,
    
[sex] [varchar](2not null,
    
[age] [int] null,
    
[address] [varchar](50null,
 
constraint [pk_table_1] primary key clustered 
 (
[no] asc)
)
go

/****** 对象:  Table [dbo].[grade]    脚本日期: 04/25/2010 12:59:24 ******/
create table [dbo].[grade]
(
    
[gradeid] [int] identity(1,1not null,
    
[gradename] [varchar](20null,
    
[remark] [varchar](20null,
    
[img] [varbinary](maxnull
)
go

/****** 对象:  Table [dbo].[class]    脚本日期: 04/25/2010 13:00:28 ******/
create table [dbo].[class]
(
    
[classid] [int] identity(1,1not null,
    
[gradeid] [int] null,
    
[classname] [varchar](20null,
    
[createdate] [datetime] null,
    
[img] [varbinary](maxnull,
 
constraint [pk_class] primary key clustered 
 (
[classid] asc)

go


Demo 代码:

SQL 2005 For XML.sql
-- SQL 2005 For XML

use Winform
go

-- raw : 是以属性的方式显示字段
select * from Person for xml raw

-- 排序
select * from Person order by age for xml raw

-- auto : 是将表名(如:Person)作为元素名显示字段
select * from Person for xml auto

-- 两表联接: 使用auto后将以父子元素的形式显示xml
select classname,gradename,createdate 
from class join grade
on grade.gradeid = class.gradeid for xml auto


-- 通过root属性添加根节点
select classname,gradename,createdate 
from class join grade
on grade.gradeid = class.gradeid 
for xml auto, root('Newer')


-- 通过elements属性将每个字段都以元素的形式显示
--
 auto关键字将显示层次结构
select classname,gradename,createdate 
from class join grade
on grade.gradeid = class.gradeid 
for xml auto,root('Newer'),elements


-- 通过elements属性将每个字段都以元素的形式显示
--
 row关键字将无层次结构
select classname,gradename,createdate 
from class join grade
on grade.gradeid = class.gradeid 
for xml raw,root('Newer'),elements


-- 通过elements属性将每个字段都以元素的形式显示
--
 path关键字将无层次结构(与row关键字一样),
--
 但无需elements关键字
select classname,gradename,createdate 
from class join grade
on grade.gradeid = class.gradeid 
for xml path,root('Newer')


来源:http://www.cnblogs.com/sufei/archive/2010/04/24/1719037.html

原文地址:https://www.cnblogs.com/xugang/p/1730424.html