e股脑电脑教程网
  • 首 页
  • 操作系统
  • 应用软件
  • 下载工具
  • 影音视频
  • 办公软件
  • 媒体制作
  • 网站建设
  • 平面设计
  • 数据库
  • 程序开发
  • 视频教程
编辑推荐: | 文章搜索:
您现在的位置: e股脑 >> 数据库 >> Mssql教程 >> SQL Server 2005 Beta 2 Transact-SQL 增强功能 2 >> 教程正文
 
教程搜索
 
 
相关教程
  • 你知道MySQL10条鲜为人知的技巧吗?
  • 你应该知道的10个MySQL客户启动选项
  • 用特殊的MySQL运算符获得更多数据比较
  • MySQL数据库中与 NULL值有关的几个问题
  • 教你快速了解公共MySQL的数据库服务器
  • MySQL 5.0在windows上的安装详细介绍
  • MySQL查询的性能优化
  • Linux操作系统中如何安装MySQL数据库
  • 23道安全门加铸MySQL数据库
  • MySQL 5.0 数据库新特性的存储过程
  • 从Windows命令行启动MySQL
  • 连接MySQL数据库失败频繁的原因
  • 加速动态网站 MySQL索引分析和优化
  • 轻松掌握如何保护MySQL中的重要数据
  • 快速掌握MySQL数据库中Show命令的用法
  • MySQL数据库的安全配置实用技巧
 
 

图文教程


  • Windows抢了谁的饭碗 非主流操作系统To

  • 地球还是火星 平常心看“非主流”

  • 综合运用Office 2007批量制作奖状

  • 没有系统盘如何才能修复受损系统?

  • 巧妙运用Excel中边界的附加功能!
 
 
赞 助 商
 
 
SQL Server 2005 Beta 2 Transact-SQL 增强功能 2
  • 来源:e股脑
  • 点击次数:
  • 更新时间:2007-8-9

4.

处理该消息。

5.

通过合并 Messages 表和 @Msgs 表变量,将消息状态设置为“done”。

6.

如果没有在 Messages 表中找到新的消息,等待一秒钟。

从多个会话中运行该代码:

USE tempdb SET NOCOUNT ON DECLARE @Msgs TABLE(msgid INT, msgdate DATETIME, msg VARCHAR(MAX)) WHILE 1 = 1 BEGIN UPDATE TOP(1) Messages WITH(READPAST) SET status = 'open' OUTPUT inserted.msgid, inserted.msgdate, inserted.msg INTO @Msgs WHERE status = 'new' IF @@rowcount > 0 BEGIN PRINT 'Processing message...' -- process message here SELECT * FROM @msgs UPDATE M SET status = 'done' FROM Messages AS M JOIN @Msgs AS N ON M.msgid = N.msgid; DELETE FROM @Msgs END ELSE BEGIN PRINT 'No messages to process.' WAITFOR DELAY '00:00:01' END END

在运行完该模拟之后,立即停止所有插入和处理消息的会话,并且删除 Messages 表:

USE tempdb DROP TABLE Messages

动态列的 MAX 说明符

SQL Server 2005 通过使用语法 (MAX) 引入 MAX 说明符,增强了变长数据类型 VARCHAR、NVARCHAR 和 VARBINARY 的能力。带有 MAX 说明符的变长数据类型用增强功能取代了数据类型 TEXT、NTEXT 和 IMAGE。使用带有 MAX 说明符的变长数据类型作为大型对象数据类型 TEXT、NTEXT 和 IMAGE 的替代类型有多个优点。无须使用显式指针操作,因为 SQL Server 在内部确定何时以内联方式存储值以及何时使用指针。您现在能够对小型和大型数据使用统一的编程模型。带有 MAX 说明符的变长数据类型受到列、变量、参数、比较、触发器和所有字符串函数等的支持。


作为使用 MAX 说明符的示例,以下代码创建了一个名为 CustomerData 的表:

CREATE TABLE CustomerData ( custid INT NOT NULL PRIMARY KEY, txt_data VARCHAR(MAX) NULL, ntxt_data NVARCHAR(MAX) NULL, binary_data VARBINARY(MAX) NULL )

该表包含列 custid (该列被用作主键)以及可为空值的列 txt_data 、ntxt_data 和 binary_data (它们分别用数据类型 VARCHAR(MAX)、NVARCHAR(MAX) 和 VARBINARY(MAX) 定义,可以存储大型数据)。

为了从带有 MAX 说明符的动态列中读取块,可以按照与常规动态列相同的方式使用 SUBSTRING 函数。为了更新块,可以使用 UPDATE 语句的增强语法,它现在提供了 WRITE 方法。增强的 UPDATE 语句的语法为:

UPDATE table_name SET column_name.WRITE(@chunk, @offset, @len) WHERE ...

WRITE 方法从 @offset 位置移除 @len 字符,并且在该位置插入 @chunk 。请注意,@offset 是从零开始的,意味着偏移量 0 表示 @chunk 中的第一个字符的位置。为了演示 WRITE 方法的用法,请首先用客户 ID 102 和 txt_data 列中的值“Customer 102 text data”在 CustomerData 表中插入一个行:

INSERT INTO CustomerData(custid,txt_data) VALUES(102, 'Customer 102 text data')

以下 UPDATE 语句将“102”替换为“one hundred and two”:

UPDATE CustomerData SET txt_data.WRITE('one hundred and two', 9, 3) WHERE custid = 102

当 @chunk 为 NULL 时,@len 被忽略,并且值在 @offset 位置截断。以下语句移除了从偏移量 28 直到结尾的所有数据:

UPDATE CustomerData SET txt_data.WRITE(NULL, 28, 0) WHERE custid = 102

当 @len 为 NULL 时,从 @offset

到结尾的所有字符都被移除,并且 @chunk 被追加。以下语句移除了从偏移量 9 直到结尾的所有数据,并且追加了“102”:

UPDATE CustomerData SET txt_data.WRITE('102', 9, NULL) WHERE custid = 102

当 @offset 为 NULL 时,@len 被忽略,并且在结尾追加了 @chunk 。以下语句在结尾追加了字符串“ is discontinued”:

UPDATE CustomerData SET txt_data.WRITE(' is discontinued', NULL, 0) WHERE custid = 102

XML 和 XQuery

SQL Server 2005 Beta 2 引入了多个与 XML 相关的增强功能,以使您可以自然地存储、查询和更新 XML 结构化数据。您可以在同一数据库中存储 XML 和关系数据,并且利用现有的数据库引擎进行存储和查询处理。

引入了一个新的 xml 数据类型。xml 数据类型可以用于表列,甚至可以进行索引。xml 数据类型还可以在变量、视图、函数和存储过程中使用。可以通过关系 FOR XML 查询生成 xml 数据类型,或者使用 OPENXML 将其作为关系行集进行访问。可以将架构导入到数据库中,或者从数据库中导出架构。可以使用架构来验证和约束 XML 数据。可以通过使用 XQuery 查询和修改 XML 类型化数据。xml 数据类型在触发器、复制、批量复制、DBCC 和全文搜索中受到支持。但是,xml 是不可比较的,这意味着您无法在 xml 列上定义 PRIMARY KEY、UNIQUE 或 FOREIGN KEY 约束。

下列示例使用了 xml 数据类型。以下代码定义了一个名为 @x 的 XML 变量,并且将客户定单数据加载到该变量中:

USE AdventureWorks DECLARE @x AS XML SET @x = (SELECT C.CustomerID, O.SalesOrderID FROM Sales.Customer C JOIN Sales.SalesOrderHeader O ON C.CustomerID=O.CustomerID ORDER BY C.CustomerID FOR XML AUTO, TYPE) SELECT @x

以下代码创建了一个带有 xml 列的表,并且通过使用 OPENROWSET 函数将一个 XML 文件批量加载到该表中:

CREATE TABLE T1 ( keycol INT NOT NULL PRIMARY KEY, xmldoc XML NULL ) INSERT INTO T1(keycol, xmldoc) SELECT 1 AS keycol, xmldoc FROM OPENROWSET(BULK 'C:\documents\mydoc.xml', SINGLE_NCLOB) AS X(xmldoc)


SQL Server 2005 Beta 2 还引入了对 XQuery(它是一个 W3C 标准 XML 查询语言)的支持。Microsoft 在 SQL Server 中为该标准提供了扩展,以允许使用 XQuery 进行插入、更新和删除。XQuery 借助于用户定义类型 (UDT) 样式方法嵌入在 Transact-SQL 中。

XQuery 提供了下列查询方法:

•

操纵 XML 数据:

上一页  1 2 3 4 5 6 7 8 9 10  ... 下一页  >> 
  • 上一篇教程: SQL Server 2005 中的分区表和索引
  • 下一篇教程: 在 SQL Server 2005 Beta 2 中编辑 Transact-SQL 代码
  •  

    关于本站 | 广告联系 | 版权声明 | 使用帮助

    Copyright © 2004-2008 www.egunao.com All rights reserved.