写一个存储过程,[email protected],为text类型
[email protected]temp
[email protected][email protected]+ 'abcd '
但是报错,即使
@[email protected]+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