前段时间,写一个生成后台管理服务器IP地址列表的存储过程,存储过程使用了解析XML的技术。
实现方法如下:
--1、先用程序把所有管理的服务器信息用XML拼接好,作为参数传递给存储过程
DECLARE @xml nvarchar(1000)
--XML格式
SET @xml='
<ROOT>
<World Worldid="1" IP="10.1.1.1" WorldName="龙腾世界"/>
<World Worldid="1" IP="10.1.1.2" WorldName="龙腾日志"/>
<World Worldid="2" IP="10.1.1.3" WorldName="天下世界"/>
<World Worldid="2" IP="10.1.1.4" WorldName="天下日志"/>
</ROOT>
'
<ROOT>
<World Worldid="1" IP="10.1.1.1" WorldName="龙腾世界"/>
<World Worldid="1" IP="10.1.1.2" WorldName="龙腾日志"/>
<World Worldid="2" IP="10.1.1.3" WorldName="天下世界"/>
<World Worldid="2" IP="10.1.1.4" WorldName="天下日志"/>
</ROOT>
'
--2、存储过程中使用以下方法进行解析
--解析XML,并写入临时表
DECLARE @hdoc int
EXEC sp_xml_preparedocument @hDoc OUTPUT,@xml
SELECT Worldid,IP,WorldName
INTO #My_Temp
FROM OPENXML(@hDoc,'//World')
WITH(
Worldid INT,
IP VARCHAR(64),
WorldName VARCHAR(64)
)
EXEC sp_xml_removedocument @hDoc
SELECT Worldid,IP,WorldName
INTO #My_Temp
FROM OPENXML(@hDoc,'//World')
WITH(
Worldid INT,
IP VARCHAR(64),
WorldName VARCHAR(64)
)
EXEC sp_xml_removedocument @hDoc
--查询临时表
SELECT * FROM #My_Temp
--查询结果
Worldid IP WorldName
----------- ---------------------------------------------------------------- ----------------------------------------------------------------
1 10.1.1.1 龙腾世界
1 10.1.1.2 龙腾日志
2 10.1.1.3 天下世界
2 10.1.1.4 天下日志
----------- ---------------------------------------------------------------- ----------------------------------------------------------------
1 10.1.1.1 龙腾世界
1 10.1.1.2 龙腾日志
2 10.1.1.3 天下世界
2 10.1.1.4 天下日志

本文介绍了如何在SQL中使用存储过程解析XML数据。通过创建一个XML字符串并使用OPENXML函数将其内容导入到临时表中,然后进行查询,展示了如何处理和提取XML中的服务器IP地址和名称。
1911

被折叠的 条评论
为什么被折叠?



