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

时间:2022-01-19 23:41:19

这一节将介绍如何用普通的T-SQL语句来操作XML数据。同时介绍了XML数据类型的一些特点。

11.2.1 使用XML变量

SQL Server 2005中增加了新的内部数据类型XML。在实际应用时可以完全将XML数据类型理解为普通的INTCHAR等类型。下面就用实际的例子来说明如何使用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 2005XML列最大可存储2GXML信息,实际上这足够用了,如果确实还需要存储超过这一限制的更大的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