WRITETEXT (Transact-SQL)

適用於:SQL ServerAzure SQL 受控執行個體

允許以記錄最少資訊的互動方式,更新現有的 textntextimage 資料行。 WRITETEXT 會覆寫它所影響之資料行中的任何現有資料。 WRITETEXT 不能用在檢視表中的 textntextimage 資料行上。

重要

SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 改為使用大數值資料類型和 UPDATE 陳述式的 .WRITE 子句。

Transact-SQL 語法慣例

Syntax

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

注意

若要檢視 SQL Server 2014 (12.x) 和舊版的 Transact-SQL 語法,請參閱 舊版檔

引數

BULK
讓上傳工具能夠上傳二進位資料流。 此資料流必須由位於 TDS 通訊協定層級的工具提供。 當資料流不存在時,查詢處理器就會忽略 BULK 選項。

重要

建議您不要在以 SQL Server 為基礎的應用程式使用 BULK 選項。 未來的 SQL Server 版本可能會變更或移除這個選項。

table.column
這是要更新之資料表及 textntextimage 資料行的名稱。 資料表和資料行名稱必須符合識別碼的規則。 資料庫名稱和擁有者名稱的指定是選擇性的。

text_ptr
這是儲存 textntextimage 資料之指標的值。 text_ptr 必須是 binary(16)。若要建立文字指標,請搭配 textntextimage 資料行並非 Null 的資料來執行 INSERTUPDATE 陳述式。

WITH LOG
SQL Server 已忽略。 記錄取決於資料庫的實際復原模式。

data
這是要儲存的實際 textntextimage 資料。 data 可以是常值或參數。 就 textntextimage 資料而言,可使用 WRITETEXT 以互動方式插入的文字長度上限大約是 120 KB。

備註

請使用 WRITETEXT 來取代 textntextimage 資料,使用 UPDATETEXT 來修改 textntextimage 資料。 UPDATETEXT 較有彈性,因為它只會變更 textntextimage 資料行的一部份,而不是變更整個資料行。

為了獲得最佳效能,建議您以 8040 個位元組之倍數的片段大小來插入或更新 textntextimage 資料。

如果資料庫復原模式為簡單或大量記錄模式,當插入或附加新資料時,使用 WRITETEXT 的 textntextimage 作業會是記錄最少資訊的作業。

注意

當更新現有的值時,不會使用最低限度記錄。

若要使 WRITETEXT 正確運作,資料行必須已包含有效的文字指標。

如果資料表沒有同資料列文字,當使用 INSERT 在 text 資料行中新增明確或隱含的 Null 值,而無法取得這些 Null 的文字指標時,SQL Server 會藉由不將 text 資料行初始化來節省空間。 若要將 text 資料行初始化成 NULL,請使用 UPDATE 陳述式。 如果資料表有資料列文字,您就不需要初始化 Null 的文字資料行,一律能夠取得文字指標。

與 WRITETEXT 相比,ODBC SQLPutData 函數的處理速度較快,且使用的動態記憶體較少。 此函數最多可插入 2 GB 的 textntextimage 資料。

在 SQL Server 中,可能有指向 textntextimage 資料的同資料列文字指標存在,但可能無效。 如需 text in row 選項的相關資訊,請參閱 sp_tableoption (Transact-SQL)。 如需使文字指標失效的相關資訊,請參閱 sp_invalidate_textptr (Transact-SQL)

權限

需要指定之資料表的 UPDATE 權限。 當傳送 UPDATE 權限時,可以傳送權限。

範例

下列範例將文字指標放在區域變數 @ptrval 中,再利用 WRITETEXT,將新的文字字串放入 @ptrval 所指向的資料列中。

注意

若要執行這個範例,您必須安裝 pubs 範例資料庫。

USE pubs;  
GO  
ALTER DATABASE pubs SET RECOVERY SIMPLE;  
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  
ALTER DATABASE pubs SET RECOVERY SIMPLE;  
GO  

另請參閱

資料類型 (Transact-SQL)
DECLARE @local_variable (Transact-SQL)
DELETE (Transact-SQL)
SELECT (Transact-SQL)
SET 陳述式 (Transact-SQL)
UPDATETEXT (Transact-SQL)