首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 數據庫知識 >  >> SQL Server 資料庫 >> 關於SqlServer

SQL Server Text 型別突破 8000 位元組限制:WRITETEXT 完整實作指南

     編輯:關於SqlServer

問題背景

SQL Server 中 text 型別雖支援大量文字,但直接 INSERT 受限於 8000 位元組。若欄位 content 為 text 型別,執行 INSERT INTO News (title, content) VALUES (@title, @content) 會因超過限制而失敗。

解決方案:WRITETEXT 分塊寫入

核心步驟:

  1. 先插入空字串佔位,取得文字指標 (TEXTPTR)
  2. 使用 WRITETEXT 以指標寫入大量資料

完整預存程序:新增資料

CREATE PROCEDURE NewsInsert 
    @title char(200), 
    @content text 
AS
BEGIN
    INSERT INTO News (title, content) VALUES (@title, '');
    
    DECLARE @ptrval binary(16);
    SELECT @ptrval = TEXTPTR(content)
    FROM News
    WHERE id = @@IDENTITY;
    
    WRITETEXT News.content @ptrval @content;
END
GO

完整預存程序:更新資料

CREATE PROCEDURE NewsUpdate 
    @title char(200), 
    @content text, 
    @id int 
AS
BEGIN
    UPDATE News SET title = @title, content = '' WHERE id = @id;
    
    DECLARE @ptrval binary(16);
    SELECT @ptrval = TEXTPTR(content)
    FROM News
    WHERE id = @id;
    
    WRITETEXT News.content @ptrval @content;
END
GO

關鍵注意事項

  • 必須先插入空字串,不可為 NULL,否則 TEXTPTR 回傳 NULL 導致後續失敗
  • 更新時同理將欄位設為空字串而非 NULL
  • 讀取與刪除操作無特殊限制,正常執行即可

適用範圍

此方法可突破 8000 位元組限制,支援寫入 text 型別理論最大長度(2^31-1 位元組)的資料。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved