SqlServer Text类型字段超过8000字处理

SqlServer的T-Sql
如下:

表结构:
字段名         id      title      content
类型            int      char(200)   text
Insert Into News (title,content) Values (@title,@content)

实际上这样插入是不能超过8000字节的(content字段)。SqlServer在这方面做了限制。

可以这样插入

CREATE   PROCEDURE  NewsInsert    @title   char ( 200 ), @content   text     AS

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

GO


用到了 writeTEXT函数。
注意:插入的时候Insert Into News (title,content) Values (@title,'')一定要有content值对应空不能让content是null状态.否则下面的无法找到地址。


更新的时候:
CREATE   PROCEDURE  NewsInsert    @title   char ( 200 ), @content   text , @id   int     AS

Update  News  Set  title  =   @title ,content = ''   Where  id  =   @id   -- 注意content=''虽然不起作用,但是最好写上,避免content有null的情况

DECLARE   @ptrval   binary ( 16 )
SELECT   @ptrval   =   TEXTPTR (content) 
FROM  News 
WHERE  id  =   @id
writeTEXT  News .content  @ptrval    @content

GO

读取和删除的时候一切正常,就不多叙述了。
以上用法可以插入数据库类型Text对应的理论实际长度以内。

你可能感兴趣的:(sqlserver)