把XML数据插入到SQL Server数据库的表中
6.3 把XML数据插入到SQL Server数据库的表中 我们可以通过使用系统存储过程sp_xml_preparedocument的OPENXML函数把XML文档中的数据插入数据库中。其中,系统存储过程sp_xml_preparedocument用来创建一个能被插入数据库的XML文档的内部表示,该存储过程返回一
6.3 把XML数据插入到SQL Server数据库的表中
我们可以通过使用系统存储过程sp_xml_preparedocument的OPENXML函数把XML文档中的数据插入数据库中。其中,系统存储过程sp_xml_preparedocument用来创建一个能被插入数据库的XML文档的内部表示,该存储过程返回一个可以访问XML文档内部表示的句柄,另一方面,系统存储过程sp_xml_removedocument可以用来删除XML文档的内部表示。
系统存储过程sp_xml_preparedocument的语法如下:
<ol><li><span><span>sp_xml_preparedocument handleddoc </span><span>OUTPUT</span><span>,xmltext </span></span></li></ol>
其中:
● handleddoc代表XML文档句柄的整数值。
● xmltext代表原始的XML文档的文本值。
系统存储过程sp_xml_removedocument的语法如下:
<ol><li><span>sp_xml_removedocument handleddoc </span></li></ol>
其中:
handleddoc代表XML文档句柄的整数值。
上述这两个存储过程都可以使用函数OPENXML,函数OPENXML的语法如下:
<ol> <li><span>OPENXML(handleddoc,rowpattern,flagvalue) </span></li> <li> <span>With</span><span> tablename </span> </li> </ol>
其中:
● handleddoc代表XML文档句柄的整数值。
● rowpattern代表来识别XML文档的节点XPath模式的可变长字符串的值。
● flagvalue代表XML数据和相关的行集之间映射的整数值。如果值为1表示要对数据库中的字段做基于属性的映射;如果值为2表示要对数据库中的字段做基于元素的映射。
● tablename代表数据库中的表名。
系统存储过程sp_xml_preparedocument读入XML文档内的文本并用MSXML解析器进行处理。处理以后,XML文档以带有元素、属性和文本的树型结构显示。OPENXML函数应用该树型结构并生成包含XML文档所有部分的行集。使用OPENXML和INSERT语句,即可以将行集中的数据插入到表中。下面通过实例进行讲解。
实例6-1 以属性的形式将XML数据插入到SQL Server数据库的表中
(1) 在SQL Server查询分析器窗口中输入以下代码:
<ol> <li><span>USE school </span></li> <li> <span>LECT * </span><span>FROM</span><span> student </span> </li> </ol>
运行后,先来查看插入之前student表中的数据,如图6-1所示。
![]() |
(2) 重新输入以下代码:
<ol> <li><span>1 USE school </span></li> <li> <span>2 </span><span>DECLARE</span><span> @doc </span><span>varchar</span><span>(1000) </span> </li> <li> <span>3 </span><span>DECLARE</span><span> @idoc </span><span>int</span><span> </span> </li> <li> <span>4 </span><span>SET</span><span> @doc='<root> </root></span> </li> <li><span>5 <student><span>"5"</span><span> </span><span>name</span><span>=</span><span>"cathy"</span><span> </span></student></span></li> <li> <span>6 sex=</span><span>"female"</span><span> age=</span><span>"21"</span><span>> </span> </li> <li><span>7 </span></li> <li><span>8 ' </span></li> <li> <span>9 </span><span>exec</span><span> sp_xml_preparedocument @idoc </span><span>output</span><span>,@doc </span> </li> <li> <span>10 </span><span>select</span><span> * </span><span>from</span><span> openxml(@idoc,</span><span>'/ROOT/student'</span><span>,1) </span> </li> <li> <span>11 </span><span>with</span><span>(id </span><span>int</span><span>,</span><span>name</span><span> </span><span>varchar</span><span>(40),sex </span><span>varchar</span><span>(20), </span> </li> <li> <span>12 age </span><span>int</span><span>) </span> </li> <li> <span>13 </span><span>insert</span><span> student </span> </li> <li> <span>14 </span><span>select</span><span> * </span><span>from</span><span> openxml(@idoc,</span><span>'/ROOT/student'</span><span>) </span> </li> <li> <span>15 </span><span>with</span><span> student </span> </li> <li> <span>16 </span><span>exec</span><span> sp_xml_removedocument @idoc </span> </li> </ol>
在上面代码的第4~8行创建了一个变量@doc并把XML数据存放在该变量中。然后,第9行执行系统存储过程sp_xml_preparedocument,来创建一个能把数据插入数据库的XML文档内部表示,该系统存储过程返回一个保存在变量@idoc中的句柄,可以用该句柄访问XML文档的内部表示。第10行使用一个select语句访问XML文档的内部表示,并把该文档中的所有数据显示出来。
(3) 运行程序,结果如图6-2所示。
![]() |
(4) 重新输入以下代码。
<ol> <li><span>USE school </span></li> <li> <span>SELECT</span><span> * </span><span>FROM</span><span> student </span> </li> </ol>
运行后,查看插入之后student表中的数据,如图6-3所示。
![]() |
通过图6-3可以清楚地看到,XML数据已经被插入到了数据库中。
实例6-2 以元素的形式将XML数据插入到SQL Server数据库的表中
接着上一个实例,我们继续进行数据的插入,不过这次是以元素的形式进行插入操作的。
首先在查询窗口中输入以下代码:
<ol> <li><span><span>1 </span><span>DECLARE</span><span> @doc </span><span>varchar</span><span>(1000) </span></span></li> <li> <span>2 </span><span>DECLARE</span><span> @idoc </span><span>int</span><span> </span> </li> <li> <span>3 </span><span>SET</span><span> @doc='<root> </root></span> </li> <li><span>4 <student> </student></span></li> <li><span>5 <id>6</id> </span></li> <li><span>6 <span>name</span><span>>sun</span><span>name</span><span>> </span></span></li> <li><span>7 <sex>male</sex> </span></li> <li><span>8 <age>24</age> </span></li> <li><span>9 </span></li> <li><span>10 ' </span></li> <li> <span>11 </span><span>exec</span><span> sp_xml_preparedocument @idoc </span><span>output</span><span>,@doc </span> </li> <li> <span>12 </span><span>select</span><span> * </span><span>from</span><span> openxml(@idoc,</span><span>'/ROOT/student'</span><span>,2) </span> </li> <li> <span>13 </span><span>with</span><span>(id </span><span>int</span><span>,</span><span>name</span><span> </span><span>varchar</span><span>(40),sex </span><span>varchar</span><span>(20), </span> </li> <li> <span>14 age </span><span>int</span><span>) </span> </li> <li> <span>15 </span><span>insert</span><span> student </span> </li> <li> <span>16 </span><span>select</span><span> * </span><span>from</span><span> openxml(@idoc,</span><span>'/ROOT/student'</span><span>,2) </span> </li> <li> <span>17 </span><span>with</span><span> student </span> </li> <li> <span>18 </span><span>exec</span><span> sp_xml_removedocument @idoc </span> </li> </ol>
在上面代码的第3~10行创建了一个变量@doc,并把XML数据存放在该变量中。然后,第11行执行系统存储过程sp_xml_preparedocument,来创建一个能把数据插入数据库的XML文档的内部表示,该系统存储过程返回一个保存在变量@idoc中的句柄,可以用该句柄访问XML文档的内部表示。第12行使用一个select语句访问XML文档的内部表示,并把该文档中的所有数据显示出来了。该段代码与实例6-1中代码的唯一区别就在于变量中存放的XML数据是以元素的形式出现的,而不是属性的形式。
运行程序,结果如图6-4所示。
![]() |
重新输入以下代码:
<ol> <li><span>USE school </span></li> <li> <span>SELECT</span><span> * </span><span>FROM</span><span> student </span> </li> </ol>
运行后,查看插入之后student表中的数据,如图6-5所示。
![]() |
可以清楚地看到,XML数据已经被插入到了数据库中。
通过上述实例可以看到,在SQL Server 2005 中,OPENXML的功能得到了增强,它可以将XML类型数据传递到sp_xml_preparedocument存储过程中,并且可以在WITH子句中使用新的数据类型。

热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

AI Hentai Generator
免费生成ai无尽的。

热门文章

热工具

记事本++7.3.1
好用且免费的代码编辑器

SublimeText3汉化版
中文版,非常好用

禅工作室 13.0.1
功能强大的PHP集成开发环境

Dreamweaver CS6
视觉化网页开发工具

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

在iPhone上面临滞后,缓慢的移动数据连接?通常,手机上蜂窝互联网的强度取决于几个因素,例如区域、蜂窝网络类型、漫游类型等。您可以采取一些措施来获得更快、更可靠的蜂窝互联网连接。修复1–强制重启iPhone有时,强制重启设备只会重置许多内容,包括蜂窝网络连接。步骤1–只需按一次音量调高键并松开即可。接下来,按降低音量键并再次释放它。步骤2–该过程的下一部分是按住右侧的按钮。让iPhone完成重启。启用蜂窝数据并检查网络速度。再次检查修复2–更改数据模式虽然5G提供了更好的网络速度,但在信号较弱

哭死啊,全球狂炼大模型,一互联网的数据不够用,根本不够用。训练模型搞得跟《饥饿游戏》似的,全球AI研究者,都在苦恼怎么才能喂饱这群数据大胃王。尤其在多模态任务中,这一问题尤为突出。一筹莫展之际,来自人大系的初创团队,用自家的新模型,率先在国内把“模型生成数据自己喂自己”变成了现实。而且还是理解侧和生成侧双管齐下,两侧都能生成高质量、多模态的新数据,对模型本身进行数据反哺。模型是啥?中关村论坛上刚刚露面的多模态大模型Awaker1.0。团队是谁?智子引擎。由人大高瓴人工智能学院博士生高一钊创立,高

最近,军事圈被这个消息刷屏了:美军的战斗机,已经能由AI完成全自动空战了。是的,就在最近,美军的AI战斗机首次公开,揭开了神秘面纱。这架战斗机的全名是可变稳定性飞行模拟器测试飞机(VISTA),由美空军部长亲自搭乘,模拟了一对一的空战。5月2日,美国空军部长FrankKendall在Edwards空军基地驾驶X-62AVISTA升空注意,在一小时的飞行中,所有飞行动作都由AI自主完成!Kendall表示——在过去的几十年中,我们一直在思考自主空对空作战的无限潜力,但它始终显得遥不可及。然而如今,

特斯拉机器人Optimus最新视频出炉,已经可以在厂子里打工了。正常速度下,它分拣电池(特斯拉的4680电池)是这样的:官方还放出了20倍速下的样子——在小小的“工位”上,拣啊拣啊拣:这次放出的视频亮点之一在于Optimus在厂子里完成这项工作,是完全自主的,全程没有人为的干预。并且在Optimus的视角之下,它还可以把放歪了的电池重新捡起来放置,主打一个自动纠错:对于Optimus的手,英伟达科学家JimFan给出了高度的评价:Optimus的手是全球五指机器人里最灵巧的之一。它的手不仅有触觉

FP8和更低的浮点数量化精度,不再是H100的“专利”了!老黄想让大家用INT8/INT4,微软DeepSpeed团队在没有英伟达官方支持的条件下,硬生生在A100上跑起FP6。测试结果表明,新方法TC-FPx在A100上的FP6量化,速度接近甚至偶尔超过INT4,而且拥有比后者更高的精度。在此基础之上,还有端到端的大模型支持,目前已经开源并集成到了DeepSpeed等深度学习推理框架中。这一成果对大模型的加速效果也是立竿见影——在这种框架下用单卡跑Llama,吞吐量比双卡还要高2.65倍。一名

上周,在内部的离职潮和外部的口诛笔伐之下,OpenAI可谓是内忧外患:-侵权寡姐引发全球热议-员工签署「霸王条款」被接连曝出-网友细数奥特曼「七宗罪」辟谣:根据Vox获取的泄露信息和文件,OpenAI的高级领导层,包括Altman在内,非常了解这些股权回收条款,并且签署了它们。除此之外,还有一个严峻而紧迫的问题摆在OpenAI面前——AI安全。最近,五名与安全相关的员工离职,其中包括两名最著名的员工,“超级对齐”团队的解散让OpenAI的安全问题再次被置于聚光灯下。《财富》杂志报道称,OpenA

70B模型,秒出1000token,换算成字符接近4000!研究人员将Llama3进行了微调并引入加速算法,和原生版本相比,速度足足快出了快了13倍!不仅是快,在代码重写任务上的表现甚至超越了GPT-4o。这项成果,来自爆火的AI编程神器Cursor背后团队anysphere,OpenAI也参与过投资。要知道在以快着称的推理加速框架Groq上,70BLlama3的推理速度也不过每秒300多token。 Cursor这样的速度,可以说是实现了近乎即时的完整代码文件编辑。有人直呼好家伙,如果把Curs

苹果公司最新发布的iOS18、iPadOS18以及macOSSequoia系统为Photos应用增添了一项重要功能,旨在帮助用户轻松恢复因各种原因丢失或损坏的照片和视频。这项新功能在Photos应用的"工具"部分引入了一个名为"已恢复"的相册,当用户设备中存在未纳入其照片库的图片或视频时,该相册将自动显示。"已恢复"相册的出现为因数据库损坏、相机应用未正确保存至照片库或第三方应用管理照片库时照片和视频丢失提供了解决方案。用户只需简单几步
