XuGang

记录一个程序员的成长

 

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

posted on   钢钢  阅读(1211)  评论(2编辑  收藏  举报

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架

导航

统计

点击右上角即可分享
微信分享提示