Я использую веб-сайт с использованием классического ASP и SQL Server 2012 на IIS 7.5.Веб-сайт управляется данными, и я использую хранимые процедуры для создания строк текста HTML для представления веб-страницы.Но строки, возвращаемые из хранимых процедур, усекаются до 4000 символов.Как предотвратить усечение?
Подробности: моя хранимая процедура определяется как:
CREATE PROCEDURE [dbo].[spCourseButtonsDisplay]
@str NVARCHAR(MAX) OUTPUT
Для конкатенации строк в хранимой процедуре используется cast
(я где-то читал, что этозащитит от усечения):
SET @str = CAST(@str + ... AS nvarchar(MAX));
Наконец, я возвращаюсь с:
RETURN len(@str)
Обратите внимание, что я могу выполнить хранимую процедуру в SQL Server Management Studio и получить строки длиннее 4000 (Я проверил с> 12000).Но не так в asp.
Я определяю параметры хранимой процедуры в своем коде asp:
.Parameters.Append .CreateParameter("StrLen", 3, 4) 'adInteger, adParamReturnValue
.Parameters.Append .CreateParameter("Str", 202, 2, 2147483646) 'adVarWChar, adParamOutput
2147483646 на единицу меньше, чем MAX, но это наибольшее число, которое я могу поставить безошибка.
Но когда я выполняю хранимую процедуру из asp и выводю эти 3 значения:
Response.Write(CStr(objSP.Parameters("StrLen")) + "<br/>")
Response.Write(CStr(Len(objSP.Parameters("Str"))) + "<br/>")
Response.Write(objSP.Parameters("Str"))
, я получаю фактическую длину созданной хранимой процедуры (> 4000), 4000 иусеченная строка.
Как получить всю строку?