WRITETEXT

发表于:2007-06-07来源:作者:点击数: 标签:
允许对现有的 text 、 ntext 或 image 列进行无日志记录的交互式更新。该语句将彻底重写受其影响的列中的任何现有数据。WRITETEXT 语句不能用在视图中的 text 、 ntext 和 image 列上。 语法 WRITETEXT { table . column text_ptr } [ WITH LOG ] { data }

允许对现有的 textntextimage 列进行无日志记录的交互式更新。该语句将彻底重写受其影响的列中的任何现有数据。WRITETEXT 语句不能用在视图中的 textntextimage 列上。

语法

WRITETEXT { table.column text_ptr }
    
[ WITH LOG ] { data }

参数

table.column

要更新的表和 textntextimage 列的名称。表名和列名必须符合标识符的规则。有关更多信息,请参见使用标识符。指定数据库名和所有者名是可选的。

text_ptr

指向 textntextimage 数据的指针的值。text_ptr 的数据类型必须为 binary(16)。若要创建文本指针,请对 textntextimage 列用非 NULL 数据执行 INSERT 或 UPDATE 语句。有关创建文本指针的更多信息,请参见 INSERT 或 UPDATE。

WITH LOG

在 Microsoft® SQL Server™ 2000 中忽略。日志记录由数据库的实际恢复模型决定。

data

要存储的实际 textntextimage 数据。data 可以是字面值,也可以是变量。对于 textntextimage 数据,可以用 WRITETEXT 交互插入的文本的最大长度大约是 120 KB。

注释

请使用 WRITETEXT 来替换 textntextimage 数据,而用 UPDATETEXT 来修改 textntextimage 数据。UPDATETEXT 更灵活,因为它仅更改 textntextimage 列的某一部分,而不是整个列。

如果数据库恢复模型简单或有大容量日志记录,则 WRITETEXT 是无日志记录的操作。这就意味着在将 textntextimage 数据写入数据库时,不会进行日志记录;因此,事务日志不会填满大量通常由这些数据类型组成的数据。

为使 WRITETEXT 正常工作,列必须已经包含有效的文本指针。

如果该表没有行内文本,则在通过 INSERT 向 text 列中放入显式或隐式空值时,SQL Server 不初始化 text 列,从而节省了空间,而且不能获取这类空值的文本指针。若要将 text 列初始化为 NULL,请使用 UPDATE 语句。如果该表有行内文本,就没有必要为空值初始化文本列,而且您始终可以获取文本指针。

与 WRITETEXT 相比,DB-Library dbwritetextdbmoretext 函数以及 ODBC SQLPutData 函数速度较快且使用的动态内存较少。这些函数可以插入多达 2G 字节的 textntextimage 数据。

在 SQL Server 2000 中,可能存在指向 textntextimage 数据的行内文本指针,但这些指针无效。有关 text in row 选项的信息,请参见 sp_tableoption。有关使文本指针无效的信息,请参见 sp_invalidate_textptr。

权限

WRITETEXT 的权限默认地授予那些对指定的表拥有 SELECT 权限的用户。这些权限可在传递 SELECT 权限时传递。

示例

下例将文本指针放到局部变量 @ptrval 中,然后 WRITETEXT 将新的文本字符串放到 @ptrval 所指向的行中。

USE pubs

GO

EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'true'

GO

DECLARE @ptrval binary(16)

SELECT @ptrval = TEXTPTR(pr_info) 

FROM pub_info pr, publishers p

WHERE p.pub_id = pr.pub_id 

   AND p.pub_name = 'New Moon Books'

WRITETEXT pub_info.pr_info @ptrval 'New Moon Books (NMB) has just released another top ten publication. With the latest publication this makes NMB the hottest new publisher of the year!'

GO

EXEC sp_dboption 'pubs', 'select into/bulkcopy', 'false'

GO

原文转自:http://www.ltesting.net