《SQL Server 2009从入门到精晓》--20180704

来源:http://www.pykjg.com 作者:一分快三平台 人气:172 发布时间:2019-11-05
摘要:XML查询手艺 XML文书档案以二个纯文本的花样存在,首要用于数据存款和储蓄。不但方便人民群众顾客读取和选取,何况使改良和护卫变得更便于。 XML数据类型 XML是SQLServer中放置的数据

XML查询手艺

XML文书档案以二个纯文本的花样存在,首要用于数据存款和储蓄。不但方便人民群众顾客读取和选取,何况使改良和护卫变得更便于。

XML数据类型

XML是SQL Server中放置的数据类型,可用来SQL语句或然作为存款和储蓄进度的参数。顾客可以直接在数据库中存款和储蓄、查询和治本XML文件。XML数据类型还是能保存整个XML文书档案。XML数据类型和别的数据类型不设有根本上的异样,能够把它用在任何平时SQL数据类型能够选择的地点。
示例1:创制三个XML变量并用XML填充

DECLARE @doc XML
SELECT @doc='<Team name="Braves" />';

示例2:创立XML数据类型列

CREATE TABLE t1(
column1 INT,
column2 XML,
CONSTRAINT pk_column1 PRIMARY KEY(column1));

在地点的示范中,column2列是XML数据类型列。
示例3:不能够将XML数据类型列设置为主键或外键

CREATE TABLE t1(
column1 INT,
column2 XML,
CONSTRAINT pk_column1 PRIMARY KEY(column2));

试行上面包车型客车代码,报错如下:
消息1919,级别16,状态1,第1 行
表't1' 中的列'column2' 的项目无法用作索引中的键列。
消息1750,级别16,状态0,第1 行
敬敏不谢创立约束。请参阅后面包车型大巴荒诞新闻。
XML数据类型的选取节制
独有ST哈弗ING数据类型才干转换来XML。
XML列无法选拔于GROUP BY语句中
XML数据类型存款和储蓄的数码无法高出2GB
XML数据类型字段不可能被设置成主键或然外键或称为其生龙活虎部分。
Sql_variant数据类型字段的应用不可能把XML数据类型作为种子项目。
XML列不能够钦赐为唯后生可畏的。
COLLATE子句不能够被采用在XML列上。
仓库储存在数据库中的XML仅帮忙128级的层系。
表中最对只好具备叁15个XML列。
XML列不能够参预到法规中。
唯风流罗曼蒂克可选用于XML列的放置标量函数是ISNULL和COALESCE。
不无XML数据类型列的表不能够有一个越过15列的主键。

类型化的XML和非类型化的XML

能够创制xml类型的变量,参数和列,只怕将XML架构集结和xml类型的变量、参数或列关联,这种意况下,xml数据类型实例称之为类型化xml实例。不然XML实例称为非类型化的实例。

XML数据类型方法

XML数据类型共有5种艺术
query():实施二个XML查询并重返查询结果(重临八个XML数据类型卡塔 尔(英语:State of Qatar)。
示例4

DECLARE @xmlDoc XML--声明XML类型的变量@xmlDoc
SET @xmlDoc='<students>
    <class name="数学" NO="8501">
        <student>
            <name>李林</name>
            <sex>男</sex>
            <age>16</age>
            <address>江苏</address>
        </student>
    </class>
</students>'--将XML实例分配给变量@xmlDoc
SELECT @xmlDoc.query('/students/class/student') AS test
--用query()查询@xmlDoc变量实例中标签<student>的子元素

查询结果如图所示
图片 1
点击查询结果
图片 2
如想查询标签

DECLARE @addr XML--声明一个XML类型变量@addr
SET @addr='/students/class/student'
SELECT @addr.exist('/students/class="江苏"') AS 返回值

结果如图所示
图片 3

注:exsit()方法的参数不必做准鲜明位

Value():总括叁个查询并从XML中回到多个大致的值(只可以回去单个值,且该值为非XML数据类型卡塔 尔(英语:State of Qatar)。
Value()方法有2个参数XQuery和SQLType,XQuery参数表示命令要从XML实例之中查询数据的具体地点,SQLType参数表示value()方法重回的值的首要推荐数据类型。
示例6

DECLARE @xmlDoc XML--声明XML类型的变量@xmlDoc
DECLARE @classID INT--声明INT类型的变量@classID
SET @xmlDoc='<students>
    <class name="数学" NO="8501">
        <student>
            <name>李林</name>
            <sex>男</sex>
            <age>16</age>
            <address>江苏</address>
        </student>
    </class>
</students>'--将XML实例分配给变量@xmlDoc
SET @classID=@xmlDoc.value('(/students/class/@NO)[1]','INT')
--将value()方法返回值赋值给变量@classID
SELECT @classID AS classID

询问结果如图所示
图片 4

注:SQLType不可能是XML数据类型,公共语言运营时(CL中华V卡塔 尔(阿拉伯语:قطر‎顾客定义类型,image,text,ntext或sql_variant数据类型,但足以是客商自定义数据类型SQL。

Modify():在XML文书档案的十分地方实践八个改换操作。它的参数XML_DML代表大器晚成串字符串,依照此字符串表明式来更新XML文书档案的内容。
示例7:在@xmlDoc的实例中,成分

DECLARE @xmlDoc XML--声明XML类型的变量@xmlDoc
SET @xmlDoc='<students>
    <class name="数学" NO="8501">
        <student>
            <name>李林</name>
            <sex>男</sex>
            <age>16</age>
            <address>江苏</address>
        </student>
    </class>
</students>'
SELECT @xmlDoc AS '插入节点前信息'
SET @xmlDoc.modify('insert <学历>本科</学历> after (students/class/student/age)[1]')
SELECT @xmlDoc AS '插入节点后信息'

查询结果插入节点后新闻如图所示
图片 5

注:modify()方法的参数中insert和其他重大字必得小写,不然会报错

Nodes():允许把XML分解到一个表结构中。此办法将XML数据类型实例拆分为关周密据,并重回包括原始XML数据的行集。
示例8:依然用@locat参数的实例来演示

DECLARE @locat XML--声明XML变量@locat
SET @locat=
'<root>
    <location locationID="8">
        <step>8的步骤</step>
        <step>8的步骤</step>
        <step>8的步骤</step>
    </location>
    <location locationID="9">
        <step>9的步骤</step>
        <step>9的步骤</step>
        <step>9的步骤</step>
    </location>
    <location locationID="10">
        <step>10的步骤</step>
        <step>10的步骤</step>
        <step>10的步骤</step>
    </location>
    <location locationID="11">
        <step>11的步骤</step>
        <step>11的步骤</step>
        <step>11的步骤</step>
    </location>
</root>'--@locat变量的实例

SELECT T.Loc.query('.') AS result
FROM @locat.nodes('/root/location') T(Loc)
GO

查询结果如下图所示
图片 6

XQuery简介

XQuery是大器晚成种查询语言,能够查询结构化大概半结构化的多寡。SQL Server 二〇一〇中对XML数据类型提供了辅助,能够存款和储蓄XML文书档案,然后利用XQuery语言举行询问。

FOR XML子句

通过在SELECT语句中运用FO索罗德XML子句能够把数据库表中的数据检索出来并生成XML格式。SQL Server 2009支撑FOHighlanderXML的三种情势,分别是RAW格局,AUTO格局,EXPLICIT方式和PATH形式。

FOR XML RAW

将表调换到成分名称是row,属性名字为列名可能列的外号。
示例9:将Student表调换为XML格式(FO大切诺基 XML RAW卡塔 尔(英语:State of Qatar)
Student表的数额如图所示
图片 7
实行语句:

SELECT * FROM Student FOR XML RAW;

查询结果如图所示
图片 8
图片 9

FOR XML AUTO

动用表名称作为成分名称,使用列名称作为质量名称,SELECT关键字前边列的次第用于XML文书档案的层系。
示例10:将Student表调换为XML格式(FO纳瓦拉 XML AUTO)
实践语句:

SELECT * FROM Student FOR XML AUTO;

查询结果如图所示
图片 10
图片 11

FOR XML EXPLICIT

允许客户显式地定义XML树的样子,不受AUTO格局中的种种节制。不可能将FOLAND XML EXPLICIT直接用在SELECT子句中。
示例11:将xmlTest表调换为XML格式(FOAventador XML EXPLICIT卡塔 尔(阿拉伯语:قطر‎
XmlTest表的数目如图所示
图片 12

SELECT DISTINCT 1 AS TAG,--指定顶级层级序号1
NULL AS PARENT,--该层级没有父级
NULL AS '班级信息!1!',
NULL AS '班级信息!2!班级',
NULL AS '班级信息!2!班级类型',
NULL AS '班级信息!2!班主任',
NULL AS '学生信息!3!学号!Element',
NULL AS '学生信息!3!学生姓名!Element',
NULL AS '学生信息!3!性别!Element',
NULL AS '学生信息!3!总分!Element'--设置所有层级元素和属性命名,暂时不对这些元素赋值
--例如在“学生信息!3!总分!Element”格式中,学生信息是元素名,3表示该元素所处层级,总分表示属性名
--Element指出生成以属性单独为一行的XML格式
UNION ALL--层级之间用UNION ALL相连
SELECT DISTINCT 2 AS TAG,--指定二级层级序号2
1 AS PARENT,--父级序号是序号为1的层级
NULL,--在层级的代码中已列出了所有层级元素和属性命名,因此这里给元素和属性做赋值。这句语句对应层级代码中“NULL AS '班级信息!1!'”,说明我希望该元素作为独立成行的标签,没有赋值。
班级,--对层级中的“NULL AS '班级信息!2!班级'”赋值,将xmlTest表中的班级赋值给属性班级
班级类型,--对层级中的“NULL AS '班级信息!2!班级类型'”赋值,将xmlTest表中的班级赋值给属性班级类型
班主任,--同上
NULL,--这句语句开始对应的是层级的属性,因此在层级的代码中不做赋值,在下面层级的代码中做赋值
NULL,
NULL,
NULL
FROM xmlTest--指出上面赋值的数据源来自于xmlTest表
UNION ALL--各个层级之间用UNION ALL连接
SELECT 3 AS TAG,--指定3级层级序号3
2 AS PARENT,--父级是序号为2的层级
NULL,--对应层级的”NULL AS '班级信息!1!'“语句,不希望它有值,所以不做赋值
NULL,--这三个NULL对应层级的各个属性,在层级的代码中已经做过赋值,因此在这里不做赋值
NULL,
NULL,
学号,--对应层级1代码中的层级3属性,在层级代码3中进行赋值
学生姓名,
性别,
年级总分
FROM xmlTest
FOR XML EXPLICIT;--将上述查询转换为XML,不能漏掉,否则结果会以表格形式显示

查询结果如图所示
图片 13
图片 14
在结果图中我们发掘,红框中3个班级音信列在协作,而全数学子都列在高生龙活虎3班下,那不是我们想要的结果,咱们希望各样班级对应本身的学员。那么怎么着解决此类主题材料吧,那关系到排序。

注:如果层级中有多少个数据完全重复,能够在该层级对应的代码前加DISTINCT关键字去除重复成分。

首先删除代码行末的FO奥迪Q5 XML EXPLICIT语句,仅仅施行剩下的有些,使结果以表格形式表现,那么结果如下
图片 15
这么些表格每行的次第也意味了该表格转变为XML文书档案后内容突显顺序。图中层级2(TAG=2卡塔 尔(阿拉伯语:قطر‎的几行,地点都在同步,那也正是为什么层级3的具有数据都在高风度翩翩3班上面了。大家须要对表格每行的各样进行调解,使学子所在行依据xmlTest表中的数据逻辑分散在班级行之下。不过依靠地方的报表发掘,不管遵照什么字段排序,都不只怕完结效果。
对的代码如下

SELECT DISTINCT 1 AS TAG,
NULL AS PARENT,
NULL AS '班级信息!1!',
NULL AS '班级信息!2!班级',
NULL AS '班级信息!2!班级类型',
NULL AS '班级信息!2!班主任',
NULL AS '学生信息!3!学号!Element',
NULL AS '学生信息!3!学生姓名!Element',
NULL AS '学生信息!3!性别!Element',
NULL AS '学生信息!3!总分!Element'
UNION ALL
SELECT DISTINCT 2 AS TAG,
1 AS PARENT,
NULL,
班级,
班级类型,
班主任,
NULL,
NULL,
NULL,
NULL
FROM xmlTest
UNION ALL
SELECT 3 AS TAG,
2 AS PARENT,
NULL,
班级,
班级类型,
班主任,
学号,
学生姓名,
性别,
年级总分
FROM xmlTest
ORDER BY [班级信息!2!班级],[学生信息!3!学号!Element]
FOR XML EXPLICIT;

相对来说第贰次代码,大家开采上边的代码不仅仅在行末对数码按成分属性举行了排序,还在赋值的代码中负有改观。在层级1代码中完全未有改观,因为层级1的代码效能是设置XML格式的,对数据排序未有影响。在上边多少个层级的赋值部分,种种层级的代码中都对位置几个层级的因素重复赋值,那样做使结果的报表中不再有那么多属性值是NULL,能够一本万利排序。最后再依据成分[班级新闻!2!班级]和[学子音讯!3!学号!Element]排序。让我们看看结果如何。
运作方面包车型地铁代码,但不运维FOCR-V XML EXPLICIT语句,看看表格中数量内容和行顺序是或不是变动
图片 16
如图所示,发掘行数据和学员数量的逐个展现正确。运维具备代码获得XML文书档案,结果如图所示
图片 17
由于XML文书档案内容过长,不贴图了,直接复制全体XML内容展现一下。

<班级信息>
  <班级信息 班级="高一1班" 班级类型="创新班" 班主任="李玉虎">
    <学生信息>
      <学号>20180101</学号>
      <学生姓名>李华</学生姓名>
      <性别>男</性别>
      <总分>5.680000000000000e+002</总分>
    </学生信息>
    <学生信息>
      <学号>20180103</学号>
      <学生姓名>孙丽</学生姓名>
      <性别>女</性别>
      <总分>3.390000000000000e+002</总分>
    </学生信息>
    <学生信息>
      <学号>20180108</学号>
      <学生姓名>吴伟</学生姓名>
      <性别>男</性别>
      <总分>5.280000000000000e+002</总分>
    </学生信息>
  </班级信息>
  <班级信息 班级="高一2班" 班级类型="重点班" 班主任="姜杰">
    <学生信息>
      <学号>20180102</学号>
      <学生姓名>张三</学生姓名>
      <性别>男</性别>
      <总分>6.270000000000000e+002</总分>
    </学生信息>
    <学生信息>
      <学号>20180104</学号>
      <学生姓名>袁康</学生姓名>
      <性别>男</性别>
      <总分>4.820000000000000e+002</总分>
    </学生信息>
    <学生信息>
      <学号>20180106</学号>
      <学生姓名>赵四</学生姓名>
      <性别>男</性别>
      <总分>5.680000000000000e+002</总分>
    </学生信息>
  </班级信息>
  <班级信息 班级="高一3班" 班级类型="提高班" 班主任="师从光">
    <学生信息>
      <学号>20180105</学号>
      <学生姓名>王婷</学生姓名>
      <性别>女</性别>
      <总分>7.610000000000000e+002</总分>
    </学生信息>
    <学生信息>
      <学号>20180107</学号>
      <学生姓名>周其</学生姓名>
      <性别>女</性别>
      <总分>3.480000000000000e+002</总分>
    </学生信息>
    <学生信息>
      <学号>20180109</学号>
      <学生姓名>甄诚</学生姓名>
      <性别>女</性别>
      <总分>7.020000000000000e+002</总分>
    </学生信息>
  </班级信息>
</班级信息>

将上边的结果比较一下原始xmlTest表,看看每一个班级和它下属学子的层级关系是还是不是有误。

注:写FO奔驰M级 XML EXPLICIT代码要细心,层级1的代码中先安装层级结构,不要先急着赋值。在上面层级的代码中对层级第11中学的代码实行赋值,最佳重复赋值,不然就会现出文中的排序难点。假若有个别层级出现重复数据,在该层级的代码前加DISTINCT关键字。扫除排序难题最佳的方法是对各种层级的习性重复赋值并在结尾用OEscortDER BY按层级属性排序。

紧密考查地点的XML文书档案,发掘总分属性的值是个float类型,要把它调换到int,只必要把层级3中对总分的赋值代码改成CAST(年级总分 AS int)
图片 18

FOR XML PATH

PATH格局提供了生机勃勃种较轻易的主意来混合成分及品质。在PATH情势中,列名或列外号被当做XPATH表明式来拍卖,这个表明式钦定了怎么将值映射到XML中。暗许景况下,PATH格局为每同样自动生成

未有称谓的列

上面介绍大器晚成种轻便的FOHighlander XML PATH应用措施

SELECT 2+3 FOR XML PATH;--将2+3的值转换成xml格式

询问结果如图所示
图片 19

注:尽管提供了空字符串FO奔驰M级 XML PATH(‘’)则不会变卦任何因素。

SELECT 2+3 FOR XML PATH('');--将2+3的值转换成xml格式并去掉<row>

询问结果如图所示
图片 20
示例12:利用xmlTest表和mainTeacher表查询出xmlTest表中战表>=700分的学员的班董事长音讯和学子音信,并转形成XML格式
XmlTest表数据如下图所示
图片 21
MainTeacher表数据如下图所示
图片 22
实践上面的言辞

SELECT xmlTest.学号 AS '学生信息/@学号',--@符号表示该名称为属性名,斜杠表示子层级
xmlTest.学生姓名 AS '学生信息/@姓名',
xmlTest.班级 AS '学生信息/@班级',
mainTeacher.姓名 AS '学生信息/班主任信息/姓名',
mainTeacher.教师编号 AS '学生信息/班主任信息/教师编号',
mainTeacher.性别 AS '学生信息/班主任信息/性别',
mainTeacher.年龄 AS '学生信息/班主任信息/年龄',
mainTeacher.联系电话 AS '学生信息/班主任信息/联系电话'
FROM xmlTest,mainTeacher
WHERE xmlTest.年级总分>=700
AND xmlTest.班主任=mainTeacher.姓名
FOR XML PATH('result');--将根目录名改为result

询问结果如下所示

<result>
  <学生信息 学号="20180105" 姓名="王婷" 班级="高一3班">
    <班主任信息>
      <姓名>师从光</姓名>
      <教师编号>83928182</教师编号>
      <性别>男</性别>
      <年龄>28</年龄>
      <联系电话>15963002120</联系电话>
    </班主任信息>
  </学生信息>
</result>
<result>
  <学生信息 学号="20180109" 姓名="甄诚" 班级="高一3班">
    <班主任信息>
      <姓名>师从光</姓名>
      <教师编号>83928182</教师编号>
      <性别>男</性别>
      <年龄>28</年龄>
      <联系电话>15963002120</联系电话>
    </班主任信息>
  </学生信息>
</result>

TYPE命令

SQL Server帮忙TYPE命令将FO昂科雷 XML的查询结果作为XML数据类型再次回到。
示例13:如故是上边的例证,将查询结果作为XML数据类型再次回到。

CREATE TABLE xmlType(xml_col XML);
--首先创建一个表xmlType,只有一列xml数据类型的xml_col
INSERT INTO xmlType
SELECT(--将上面的查询语句全部复制到括号中,末尾加上TYPE,表示将XML文档作为xml数据类型,并插入到表xmlType中
SELECT xmlTest.学号 AS '学生信息/@学号',
xmlTest.学生姓名 AS '学生信息/@姓名',
xmlTest.班级 AS '学生信息/@班级',
mainTeacher.姓名 AS '学生信息/班主任信息/姓名',
mainTeacher.教师编号 AS '学生信息/班主任信息/教师编号',
mainTeacher.性别 AS '学生信息/班主任信息/性别',
mainTeacher.年龄 AS '学生信息/班主任信息/年龄',
mainTeacher.联系电话 AS '学生信息/班主任信息/联系电话'
FROM xmlTest,mainTeacher
WHERE xmlTest.年级总分>=700
AND xmlTest.班主任=mainTeacher.姓名
FOR XML PATH('result'),TYPE
);
SELECT * FROM xmlType;--查询xmlType表

询问结果如图所示
图片 23
双击打开查看XML

<result>
  <学生信息 学号="20180105" 姓名="王婷" 班级="高一3班">
    <班主任信息>
      <姓名>师从光</姓名>
      <教师编号>83928182</教师编号>
      <性别>男</性别>
      <年龄>28</年龄>
      <联系电话>15963002120</联系电话>
    </班主任信息>
  </学生信息>
</result>
<result>
  <学生信息 学号="20180109" 姓名="甄诚" 班级="高一3班">
    <班主任信息>
      <姓名>师从光</姓名>
      <教师编号>83928182</教师编号>
      <性别>男</性别>
      <年龄>28</年龄>
      <联系电话>15963002120</联系电话>
    </班主任信息>
  </学生信息>
</result>

FOMurano XML的嵌套查询

示例14:在演示12的查询结果中查询班高管联系电话

SELECT (
SELECT xmlTest.学号 AS '学生信息/@学号',
xmlTest.学生姓名 AS '学生信息/@姓名',
xmlTest.班级 AS '学生信息/@班级',
mainTeacher.姓名 AS '学生信息/班主任信息/姓名',
mainTeacher.教师编号 AS '学生信息/班主任信息/教师编号',
mainTeacher.性别 AS '学生信息/班主任信息/性别',
mainTeacher.年龄 AS '学生信息/班主任信息/年龄',
mainTeacher.联系电话 AS '学生信息/班主任信息/联系电话'
FROM xmlTest,mainTeacher
WHERE xmlTest.年级总分>=700
AND xmlTest.班主任=mainTeacher.姓名
FOR XML PATH('result'),TYPE).query('result/学生信息/班主任信息/联系电话') AS '优秀教师联系方式';

SELECT里面依然沿用了演示第13中学被套用的代码,外面用了query方法,查询结果如下图所示
图片 24

<联系电话>15963002120</联系电话>
<联系电话>15963002120</联系电话>

XML索引

由于XML数据类型最大可存款和储蓄2GB的数目,因而供给成立XML索引来优化查询品质。

主XML索引

主XML索引对XML列中XML实例内的全体标志,值和路径实行索引。成立主XML索引时,相应XML列所在的表必需对该表的主键创造了集中索引。

辅助XML索引

为了加强主XML索引的性质,能够创制协助XML索引。独有创设了主XML索引后技能创制支持XML索引。支持XML索引分3种:PATH,VALUES和PROPERTY援助XML索引。

创办索引

为表中某些列创设索引,必要该列是XML数据类型。

ALTER TABLE Student
ADD xml_test XML;--对Student表添加一个XML数据类型字段xml_test
--对Student表的xml_test字段创建主XML索引,命名为学生信息表
CREATE PRIMARY XML INDEX 学生信息表
ON Student(xml_test)
GO
--对Student表的xml_test字段创建PATH辅助XML索引,记得写上主索引名
CREATE XML INDEX 辅助学生信息表
ON Student(xml_test)
USING XML INDEX 学生信息表 FOR PATH
GO

注:协理索引的命名不可能与主索引相符。

校订和删除索引(ALTECRUISER INDEX 和 DROP INDEX卡塔尔国
ALTER INDEX ALL ON Student--重建所有索引
REBUILD WITH(FILLFACTOR=80,SORT_IN_TEMPDB=ON,STATISTICS_NORECOMPUTE=ON);
--删除索引
DROP INDEX 学生信息表 ON Student
GO

注:删除主索引,与其连带的全数帮助索引也会被去除。由此地点语句中删去学子消息表索引后,协助学子消息表索引也被剔除了。

OPENXML函数

OPENXML是两个行集函数,用于检索XML文书档案。在试用OPENXML函数在此以前,必定要先用系统存款和储蓄进度sp_xml_preparedocument解析文书档案,该存款和储蓄进度在言之有序完XML文书档案后会重返多个句柄,使用OPENXML检索文档时要将该句柄作为参数字传送给OPENXML。
示例15

--定义两个变量@Student和@StudentInfo
DECLARE @Student int
DECLARE @StudentInfo xml
--使用SET为@StudentInfo赋值
SET @StudentInfo='
<row>
<姓名>祝红涛</姓名>
<班级编号>2019382910</班级编号>
<成绩>89</成绩>
<籍贯>沈阳</籍贯>
</row>
'
--使用系统存储过程sp_xml_preparedocument分析由@Student变量表示的XML文档,将分析得到的句柄赋值给@Student变量
EXEC sp_xml_preparedocument @Student OUTPUT,@StudentInfo
--在SELECT语句中使用OPENXML函数返回行集中的指定数据
SELECT * FROM OPENXML(@Student,'/row',2)
WITH(
姓名 varchar(8),
班级编号 varchar(10),
成绩 int,
籍贯 varchar(20)
);

结果如图所示
图片 25
在上述语句中,sp_xml_preparedocument存款和储蓄进度语句用了2个参数,当中@Student是三个int型变量,该存款和储蓄进度会将句柄存款和储蓄在@Student变量中作为结果数据,@StudentInfo是三个XML类型的变量,存款和储蓄了将要举行剖判的XML文书档案。
OPENXML函数的说话中,使用了3个参数,此中@Student代表已经因而sp_xml_preparedocument存款和储蓄进度解析的文书档案的句柄,’/row’使用XPath情势提供了叁个路线,代表要回到XML文书档案中该路线下的数额行,2是叁个可选数据参数,表示将这几个多少行以元素为基本映射。

本文由一分快三平台发布于一分快三平台,转载请注明出处:《SQL Server 2009从入门到精晓》--20180704

关键词:

上一篇:积攒进度多规格查询

下一篇:没有了

最火资讯