首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >从被截断的SQL Server存储过程返回字符串

从被截断的SQL Server存储过程返回字符串
EN

Stack Overflow用户
提问于 2018-05-23 03:10:15
回答 2查看 923关注 0票数 1

我使用经典的ASP和SQL Server 2012在IIS 7.5上运行一个网站。该网站是数据驱动的,我使用存储过程创建HTML文本字符串来显示Web页面。但是从存储过程传回的字符串将被截断为4000个字符。如何防止截断发生?

详细信息:我的存储过程定义为:

代码语言:javascript
复制
CREATE PROCEDURE [dbo].[spCourseButtonsDisplay]
    @str NVARCHAR(MAX) OUTPUT

存储过程中的字符串连接使用了cast (我在某处读到这将防止截断):

代码语言:javascript
复制
SET @str = CAST(@str + ... AS nvarchar(MAX));

最后,我带着:

代码语言:javascript
复制
RETURN len(@str)

请注意,我可以在SQL Server Management Studio中执行存储过程,并获得长度大于4000的字符串(我已经使用>12000进行了测试)。但在asp中并非如此。

我在我的asp代码中定义了存储过程参数:

代码语言:javascript
复制
.Parameters.Append .CreateParameter("StrLen", 3, 4)  'adInteger, adParamReturnValue
.Parameters.Append .CreateParameter("Str", 202, 2, 2147483646)   'adVarWChar, adParamOutput

2147483646比MAX小1,但这是我能放在没有错误的最大数字。

但是当我从asp执行存储过程并输出这3个值时:

代码语言:javascript
复制
Response.Write(CStr(objSP.Parameters("StrLen")) + "<br/>")
Response.Write(CStr(Len(objSP.Parameters("Str"))) + "<br/>")
Response.Write(objSP.Parameters("Str"))

我得到了存储过程创建的实际长度(> 4000 )、4000和一个截断的字符串。

我怎样才能得到整个字符串?

EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50474892

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档