我有个字段是ntext类型的,用的文本编辑器,字少的话任何问题没有,字一多就出现
'Times' 附近有语法错误。
是通过传参数进去的~~~~

解决方案 »

  1.   

    是在存储过程中
    @doc_classid int,
    @doc_title varchar(50),
    @doc_content ntext,
    @doc_keyword varchar(50),
    @doc_adduser varchar(50),
    @doc_addtime datetime,@doc_content ntext,就是这个用来接受数据的,
      

  2.   

    @doc_classid int,
    @doc_title varchar(50),
    @doc_content ntext,
    @doc_keyword varchar(50),
    @doc_adduser varchar(50),
    @doc_addtime datetime,
    @doc_updateuser varchar(50),
    @doc_updatetime datetime,
    @doc_topflag bit,
    @doc_hotflag bit,
    @doc_flag int AS
    declare @doc_id int
    declare @doc_classflag int
    DECLARE @ptrval binary(16)
    select @doc_classflag=max(doc_classflag)+1 from hicms_docinsert into hicms_doc (doc_title,doc_classflag,doc_classid,doc_keyword,doc_adduser,doc_addtime,doc_updateuser,doc_updatetime,doc_topflag,doc_hotflag) values
    (@doc_title,@doc_classflag,@doc_classid,@doc_keyword,@doc_adduser,@doc_addtime,@doc_updateuser,@doc_updatetime,@doc_topflag,@doc_hotflag)
    SELECT @doc_id=@@IDENTITY
    SELECT @ptrval = TEXTPTR(doc_content) FROM hicms_doc WHERE doc_id=@doc_id
     WRITETEXT hicms_doc.doc_content @ptrval @doc_content
    insert into hicms_store (store_id,store_view) values (@doc_id,@doc_flag)本来content是在一条insert中的,现在发现是传进参数的问题
      

  3.   

    你先把
    @doc_content ntext,
    换成
    @doc_content varchar(2000),
    试试看,这样也许你能找到问题的所在
      

  4.   

    关闭表的text in row选项试试:
    EXEC sp_tableoption 'hicms_doc', 'text in row', 'off'
      

  5.   

    提供一个笨办法:先别传doc_content值,先传其他参数,然后取出@@identity,然后用记录集update doc_content
      

  6.   

    邹老大曾经说过:大对象一般在程序中处理.sql 2005直接用varchar(max)代替text就可以了.http://community.csdn.net/Expert/topic/4945/4945784.xml?temp=.3814661
      

  7.   

    @doc_content ntext,
    换成
    @doc_content text,
    看看
    text比ntext容量大
      

  8.   

    现在是@doc_content ntext,接受参数接受不过来
      

  9.   

    关闭表的text in row选项试试:
    EXEC sp_tableoption 'hicms_doc', 'text in row', 'off'
      

  10.   

    >1 检查其他地方有没有错表的一条记录只能存储8K
    所以, 即使你定义了列为: varchar(8000)
    也必须保证, 你插入的记录的所有列加起来没有超过8K, 否则就会出现截断的现象-- 简单的说, 下面的会出问题
    DECLARE @t TABLE(col1 char(1000), col2 varchar(8000))INSERT @t SELECT '', REPLICATE('a', 8000)DECLARE @t TABLE(col1 char(1000), col2 ntext)INSERT @t SELECT '', REPLICATE('a', 8000)
    -----------
    像这样就没有问题>2 尝试用其他方法,存储过程对text /ntext有限制
    建议用其他方式来处理,参考
    http://community.csdn.net/Expert/topic/5294/5294445.xml?temp=.1962549
    http://community.csdn.net/Expert/topic/5296/5296764.xml?temp=.8853418