日期:2014-05-18  浏览次数:20576 次

关于text字段操作的问题,高分求教!
写一个存储过程,定义了一个OUTPUT参数@temp,为text类型
现在存储过程里想写循环把一些varchar字段累加到@temp
形如@temp=@temp+ 'abcd '
但是报错,即使
@temp=@temp+convert(text, 'abcd ')
也不行,请问该怎么写呢?

------解决方案--------------------
不能定义变量为text 或ntext类型.改为varchar(8000)
------解决方案--------------------
CREATE PROCEDURE Ptest_text
@ftext text
AS
EXEC sp_dboption 'hdns_test ', 'select into/bulkcopy ', 'true '
DECLARE @ptrval binary(16)
SELECT @ptrval = TEXTPTR(ftext) FROM test_text WHERE finterid = 1
WRITETEXT test_text.ftext @ptrval @ftext
EXEC sp_dboption 'hdns_test ', 'select into/bulkcopy ', 'false '

程序中执行代码如下:

With Comm
.Parameters.Append .CreateParameter( "sstr ", adChar, adParamInput, 8000) '输入信息
.Parameters( "sstr ").Value = String$(8000, "a ")
.CommandText = "ptest_text "
.ActiveConnection = CONN
.CommandType = adCmdStoredProc
Set Rs = .Execute
End With
MsgBox "finish "
------解决方案--------------------
但是如果varchar8000不够呢?
==========> 可以多建几个变量,然后一一输出,楼主如果是用sql2005,则长度不受8000限制了.
------解决方案--------------------
SQLSERVER规定变量不能是 text、ntext 或 image 数据类型.
存储过程多设计几个冗余的varchar(8000)类型参数,在存储过程中对连接的字符串长度进行判断,如果长度差不多8000了就保存到其它参数中.应用程序端对输出参数进行判断是否为空,把不为空的参数值再串联起来.
------解决方案--------------------
关注
------解决方案--------------------
http://www.cnblogs.com/yangxiao24/archive/2007/05/24/758295.html