在SQL Server中如何与XML交互
2008-08-28 09:57:23 来源:WEB开发网现在来分析以上这个例子:
在定义好了@XmlDocument的XML文档后,然后调用系统程序sp_xml_preparedocument,它表示在XML文档存在内存的时候,允许XML文档作为调用参数。然后就可以调用OPENXML函数。通过指定为 /ROOT/Customer 的标识要处理的 节点,读取CustomerID和ContactName的值,然后就调用系统程序sp_xml_removedocument删除SQL Server 服务器内存中的XML数据。
但在调用OPENXML函数时要注意内存的使用情况。系统程序sp_xml_preparedocument 的返回值是指向内存中XML文档的句柄。所以不要使用OPENXML加载较大的XML文档,否则可能会造成服务器的内存溢出。
3) 针对 xml 数据类型的 XQuery
XQuery 是一种可以查询结构化或半结构化 XML 数据的语言。由于 SQL Server 2005 数据库引擎中提供 xml 数据类型支持,因此可以将文档存储在数据库中,然后使用 XQuery 进行查询。
在此我们只举一个简单的例子:
DECLARE @x xml
SET @x = '<Myroot><Element1>First</Element1><Element2>Second</Element2>
</Myroot>'
SELECT @x.query('/Myroot')
输出的结果如下:
<Myroot>
<Element1>First</Element1>
<Element2>Second</Element2>
</Myroot>
DECLARE @x xml
SET @x = '<Myroot><Element1>First</Element1><Element2>Second</Element2>
</Myroot>'
SELECT @x.query('/Myroot/Element1')
输出的结果如下:
<Element1>First</Element1>
可以看到,它通过读取XML文档的节点,而输出对应的值。
XQuery功能非常强大,所涉及到的内容也非常广泛,感兴趣的读者可以查看SQL Server 2005 Books Online中的XQuery详细介绍。
尽管在SQL Server 2005中XML数据类型就象许多其它数据类型一样对待,它还是存在以下的一些限制:
· XML类型不能转换成text或ntext数据类型。
· 除了string类型,没有其它数据类型能够转换成XML。
· XML列不能应用于GROUP BY语句中。
· 分布式局部(partitioned)视图不能包含XML数据类型。
· sql_variant实例的使用不能把XML作为一种子类型。
· XML列不能成为主键或外键的一部分。
· XML列不能指定为唯一的。
· COLLATE子句不能被使用在XML列上。
· XML列不能加入到规则中。
· 唯一可应用于XML列的内置标量函数是ISNULL和COALESCE。没有任何其它内置标量函数支持使用XML类型。
· 表中最多只能拥有32个XML列。
· 具有XML列的表不能有一个超过15列的主键。
· 具有XML列的表不能有一个timestamp数据类型作为它们的主键的一部分。
· 存储在数据库中的XML仅支持128级的层次。
更多精彩
赞助商链接