WRITETEXT (Transact-SQL)
適用於:SQL Server Azure SQL 受控執行個體
允許以記錄最少資訊的互動方式,更新現有的 text、ntext 或 image 資料行。 WRITETEXT 會覆寫它所影響之資料行中的任何現有資料。 WRITETEXT 不能用在檢視表中的 text、ntext 及 image 資料行上。
重要
SQL Server 的未來版本將移除此功能。 請避免在新的開發工作中使用這項功能,並規劃修改目前使用這項功能的應用程式。 改為使用大數值資料類型和 UPDATE 陳述式的 .WRITE 子句。
語法
WRITETEXT [BULK]
{ table.column text_ptr }
[ WITH LOG ] { data }
引數
BULK
讓上傳工具能夠上傳二進位資料流。 此資料流必須由位於 TDS 通訊協定層級的工具提供。 當資料流不存在時,查詢處理器就會忽略 BULK 選項。
重要
建議您不要在以 SQL Server 為基礎的應用程式使用 BULK 選項。 未來的 SQL Server 版本可能會變更或移除這個選項。
table .column
這是要更新之資料表及 text、ntext 或 image 資料行的名稱。 資料表和資料行名稱必須符合識別碼的規則。 資料庫名稱和擁有者名稱的指定是選擇性的。
text_ptr
這是儲存 text、ntext 或 image 資料之指標的值。 text_ptr 必須是 binary(16)。若要建立文字指標,請搭配 text、ntext 或 image 資料行並非 Null 的資料來執行 INSERT 或 UPDATE 陳述式。
WITH LOG
SQL Server 已忽略。 記錄取決於資料庫的實際復原模式。
data
這是要儲存的實際 text、ntext 或 image 資料。 data 可以是常值或參數。 就 text、ntext 及 image 資料而言,可使用 WRITETEXT 以互動方式插入的文字長度上限大約是 120 KB。
備註
請使用 WRITETEXT 來取代 text、ntext 及 image 資料,使用 UPDATETEXT 來修改 text、ntext 及 image 資料。 UPDATETEXT 較有彈性,因為它只會變更 text、ntext 或 image 資料行的一部份,而不是變更整個資料行。
為了獲得最佳效能,建議您以 8040 個位元組之倍數的片段大小來插入或更新 text、ntext 及 image 資料。
如果資料庫復原模式為簡單或大量記錄模式,當插入或附加新資料時,使用 WRITETEXT 的 text、ntext 及 image 作業會是記錄最少資訊的作業。
注意
當更新現有的值時,不會使用最低限度記錄。
若要使 WRITETEXT 正確運作,資料行必須已包含有效的文字指標。
如果資料表沒有同資料列文字,當使用 INSERT 在 text 資料行中新增明確或隱含的 Null 值,而無法取得這些 Null 的文字指標時,SQL Server 會藉由不將 text 資料行初始化來節省空間。 若要將 text 資料行初始化成 NULL,請使用 UPDATE 陳述式。 如果資料表有資料列文字,您就不需要初始化 Null 的文字資料行,一律能夠取得文字指標。
與 WRITETEXT 相比,ODBC SQLPutData 函數的處理速度較快,且使用的動態記憶體較少。 此函數最多可插入 2 GB 的 text、ntext 或 image 資料。
在 SQL Server 中,可能有指向 text、ntext 或 image 資料的同資料列文字指標存在,但可能無效。 如需 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)