分享
 
 
 

SQL Server 2005与XML的紧密整合

王朝mssql·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

FOR XML子句

增强 说明

RAW模式下ELEMENTS RAW查询可以返回以元素为中心的XML结果

NULL值支持 支持null值,可以在一元素为中心的结果中包含空值元素

Inline XSD schemas 可以生成inline XSD架构

TPYE指明返回xml数据类型值 对于FOR XML查询,可以返回xml数据类型的值,使XML嵌套查询成为可能

PATH模式 可以象XPath表达式一样定义XML结果

ROOT标识 为结果集指定根元素

Elements命名 为RAW和PATH模式查询指定命名元素

FOR XML子句范例

1、RAW模式下ELEMENTS

SELECT SaleID,ProductID,Quantity

FROM Sales

FOR XML RAW,ELEMENTS

2、NULL值支持

SELECT SaleID,ProductID,Quantity

FROM Sales

FOR XML RAW,ELEMENTS XSINIL

3、Inline XSD schemas

SELECT ProductID,Name,ListPrice

FROM Production.Product Product

FOR XML AUTO,XMLSCHEMA

4、TPYE指明返回xml数据类型值

SELECT ProductID,Name,ListPrice

(SELECT saleid,ProductID,Quantity

FROM Sales

WHERE Sales.ProductID-Products.ProductID

FOR XML RAW,TYPE)

FROM Products FOR XML AUTO

5、PATH模式

SELECT ProductID AS "@ProductID",

Name AS "Details/@Name",

Description AS "Details/text()"

FROM products FOR XML PATH

6、ROOT标识

SELECT ProductID,Name,ListPrice

FROM Products FOR XML AUTO,ROOT('PRODUCTS')

7、Elements命名

OPENXML函数

增强 描述

文档可以是xml数据类型值 sp_xml_preparedocument存储过程支持xml参数

WITH子句支持XML数据类型 在WITH子句中,XML类型数据能够被返回

Batch-level scoping 文档handle在批级有效,当查询批结束后,文档handle也被释放

OPENXML函数范例

declare @mydoc xml

set @mydoc='

<Products>

<Product Category="Book">

<ID>1</ID>

<Name>Windows 2003</Name>

<Vendor>Vendor1</Vendor>

</Product>

<Product Category="Book">

<ID>2</ID>

<Name>VS.NET2003</Name>

<Vendor>Vendor2</Vendor>

</Product>

</Products>'

declare @docHandle int

Exec sp_xml_preparedocument @docHandle OUTPUT,@mydoc

SELECT * FROM OPENXML(@docHandle,'/Products/Product',2)

WITH (ID int,Name nvarchar(50),Vendor nvarchar(50))

--------------------------

declare @mydoc xml

set @mydoc='

<Products>

<Product Category="Book" ID="1" Name="Windows 2003" />

<Product Category="Book" ID="2" Name="VS.NET 2003" />

</Products>'

declare @docHandle int

Exec sp_xml_preparedocument @docHandle OUTPUT,@mydoc

SELECT * FROM OPENXML(@docHandle,'/Products/Product',1)

WITH (Category nvarchar(50),ID int,Name nvarchar(50))

在数据库中存放XML

优点:

对结构化和非结构化数据实现单一存储

在关系模式中定义可变内容

选择最适合的数据类型

功能:

XML Indexes

基于XQuery的数据检索

基于XQuery的数据修改

XML架构支持:

Typed XML需要架构验证

UnTyped XML需要架构验证

怎样使用Untyped XML

声明xml数据类型

隐式转换字符串

显示转换字符值

使用Convert显示转换字符串

使用well-formed XML

Untyped XML范例

1、声明xml数据类型

CREATE TABLE Invoices

(

InvoiceID INT,

SalesDate DateTime,

CustomerID INT,

ItemList XML

)

DECLARE @itemDoc xml

2、隐式转换字符串值

SET @itemDoc = '<Items>etc.</Items>'

3、显示转换字符串

SET @itemDoc = CAST('<Items>etc.</Items>') AS XML

4、显示CONVERT显示转换字符串

SET @itemDoc = CONVERT(xml,'<Items>etc.</Items>')

5、使用well-formed XML

SET @itemDoc = CONVERT(XML,'<items>etc.')

ERROR!

怎样管理XML架构

1、建立XML架构集合

CREATE XML SCHEMA COLLECTION SalesSchema

AS

'<?xml version="1.0" standalone="yes"?>

<xs:schema id="Sales" xmlns="http://www.gocean.com.cn" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">

<xs:element name="Sales" msdata:IsDataSet="true" msdata:Locale="zh-CN">

<xs:complexType>

<xs:choice minOccurs="0" maxOccurs="unbounded">

<xs:element name="Product">

<xs:complexType>

<xs:sequence>

<xs:element name="ID" type="xs:int" minOccurs="0" />

<xs:element name="Name" type="xs:string" minOccurs="0" />

<xs:element name="Qty" type="xs:int" minOccurs="0" />

</xs:sequence>

</xs:complexType>

</xs:element>

</xs:choice>

</xs:complexType>

</xs:element>

</xs:schema>

'

2、查看schema信息

SELECT * FROM sys.xml_schema_collections

SELECT * FROM sys.xml_namespaces

3、修改schema集合

ALTER XML SCHMEMA COLLECTION cvSchemas

4、删除schema集合

DROP XML SCHMEMA COLLECTION cvSchemas

怎样使用Typed XML

1、声明typed列或变量

CREATE TABLE HumanResources.EmployeeResume

(

Emplyee INT,

Resume XML (cvSchemas)

[1] [2] [3] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有