您的位置:首页 > 数据库

2、SQL Server 2005中使用XML数据类型

2011-10-08 22:36 267 查看
这一节将介绍如何用普通的T-SQL语句来操作XML数据。同时介绍了XML数据类型的一些特点。

11.2.1
使用XML变量

在SQL Server 2005中增加了新的内部数据类型XML。在实际应用时可以完全将XML数据类型理解为普通的INT、CHAR等类型。下面就用实际的例子来说明如何使用XML数据类型。<
xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" />

启动SQL Server 2005 Managerment Studio,连接到服务器,新建一个查询,输入如下的语句,单击执行按钮。
--定义XML类型的变量
DECLARE @MyXML AS XML
--赋值
SET @MyXML = '<MyXML>Hello XML World!</MyXML>'
--查看变量的值
SELECT @MyXML
运行结束后,单击结果中蓝色字体显示的结果。SQL Server Managerment Studio将在一个新的窗口中以XML树型的方式完整的显示XML变量内容。
这样就知道怎样使用XML型变量了。也许这太简单了!看上去这好像和普通的字符串变量没有什么区别,可为什么要增加这样一个类型呢?
那么就假定它只不过是个另类的字符串变量吧。接着来试试下面类似的语句,并单击执行按钮。
--定义XML类型的变量
DECLARE @MyXML AS XML
--赋值,注意删除结束标记,制作一个错误的XML
SET @MyXML = '<MyXML>Hello XML World! '
--查看变量的值
SELECT @MyXML
看到如下的出错信息了吗?
消息9400,级别16,状态1,第4

XML
分析: 行1,字符23,意外的输入结尾
怎么样,理解XML类型能够干什么了吧?它就是为了增强对XML数据操作的处理。它不只是一个简单的另类字符串类型,而是一个带着完整规则检查机制的强数据类型。
使用它,就可以不用怕万一XML的结构被搞错时,导致一些不必要的麻烦。因为这在SQL
Server 2005中是不允许的。SQL Server 2005有完整的机制保障所有的XML类型的数据都是符合XML规范要求的。想犯错是不容易的!

11.2.2
在表中使用XML列

学会了使用XML类型的变量,接着来来看看如何在表中使用XML类型的列。
(1)创建一个带XML列的表。
--使用本书建议创建的测试数据库
Use MyTest1
go
--创建一个使用XML类型列的表
CREATE TABLE MyXMLTb
(
XMLKID int PRIMARY KEY IDENTITY(1,1),
MyXML XML
)
Go
说明:这个表非常的简单,为了突出XML数据列的特性使用了一个自动的种子列作为主键。由此可以看出使用XML类型定义数据列和其它的数据类型是没有什么区别的。
(2)单击执行按钮。
确认MyXMLTb表被创建了。
(3)用INSERT插入XML型数据。
INSERT INTO MyXMLTb(MyXML)

VALUES('<Book><Name>Text In SQL</Name><Author AName="Sun"/></Book>')
Go
INSERT INTO MyXMLTb(MyXML)

VALUES('<Student><MainInfo SName="Wang"/><Class>2</Class></Student>')
Go
要注意的是如果文本常量中的值不是正确的XML格式时,插入语句会报错。这实际上从根本上保证XML列数据的正确性。在SQL
Server 2005中XML列最大可存储2G的XML信息,实际上这足够用了,如果确实还需要存储超过这一限制的更大的XML,可以使用一些技巧将这种XML信息拆分到几个不同的数据行中,或拆分到几个不同的字段上。
(4)单击执行按钮。
(5)用SELECT查询XML型数据。
SELECT * FROM MyXMLTb
(6)单击执行按钮。
执行后可以看到,前面插入的数据已经在表中了。同时不要忘记用鼠标点击表格结果中的XML列,看一下每一个XML显示出来后是什么样子,以加深对XML的理解。
通过以上步骤,可以总结出XML类型的如下的特点:
XML数据类型可以存储任何合格的XML数据,而不一定要求格式必须一致。
说明:注意前面的两行插入语句了吗?它们的结构是明显不同的,但都是合法的XML数据,这也说明,在后面的章节中将详细讨论这一特性的优缺点,以及如何在需要的时候限定XML列的详细格式。
(7)修改和删除XML数据:
要修改XML数据可直接使用UPDATE语句,要删除表中的XML数据可以直接使用DELETE语句,此处都不再举例,读者可以自己去Managerment
Studio中做实验。
至此使用XML型列的基本T-SQL语句操作就介绍完了。从这些内容可以看出从数据类型的角度讲XML类型与其它的SQL
Server 2005内置数据类型没有什么大的区别,因此掌握了一般数据类型的操作方法,XML数据类型也就不是什么问题了。

11.2.3
XML类型的其他用法

除了用作普通的变量或在表中用作列之外,XML数据类型还可以用于其它的SQL
Server 2005数据库对象,比如:
(1)用于函数参数
除了将XML类型直接用于表中,还可以将XML类型作为自定义函数的输入参数或返回值。下面这个例子显示了如何定义这样的函数:
--创建一个参数为XML类型,并且返回XML类型的自定义函数
Create Function MyXMLFun(@XMLVal As XML)
Returns XML
Begin

Return @XMLVal
End
(2)用于存储过程的参数
同样的XML数据类型也能够用来定义存储过程的输入输出参数。请看例子:
CREATE PROCEDURE MyXMLProc
@XMLINVal XML,
@XMLOutVal XML Output
AS
Begin

Set @XMLOutVal = @XMLINVal
End
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: