转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 数据库 >> Sql Server >> 正文
SQL Server 2005与XML的紧密整合         

SQL Server 2005与XML的紧密整合

作者:闵涛 文章来源:闵涛的学习笔记 点击数:3630 更新时间:2007/11/14 13:11:15

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、删除

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


[Access]sql随机抽取记录  [Access]ASP&SQL让select查询结果随机排序的实现方法
[聊天工具]企业邮件系统的利器----FoxMail Server  [系统软件]OPEN SERVER 5.0.5安装EXP300阵列柜
[系统软件]SQL语句性能优化--LECCO SQL Expert  [系统软件]关于Windows2000Server的灾难恢复
[常用软件][网络]下载服务革命性风暴Poco Server评测  [C语言系列]动态创建SQL Server数据库、表、存储过程等架构信…
[C语言系列]SQL Server到DB2连接服务器的实现  [C语言系列]SQL Server到SYBASE连接服务器的实现
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · Sql Server  · MySql
    · Access  · ORACLE
    · SyBase  · 其他
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台