Вызов хранимой процедуры из VB6.
lcmdADOCommand.Parameters.Append lcmdADOCommand.CreateParameter("@p_user_id", adVarChar, adParamInput, 8, lobjFPSysUtilsSBO.ExtractUserFromToken(strSessionTokenVal))
lcmdADOCommand.Parameters.Append lcmdADOCommand.CreateParameter("@p_source_data_XML", adVarChar, adParamInput, -1, strXML_Warranty_RSRef)
lcmdADOCommand.Parameters.Append lcmdADOCommand.CreateParameter("@p_unlock_object_flag", adBoolean, adParamInput, , blnUnlockObjectVal)
lcmdADOCommand.Parameters.Append lcmdADOCommand.CreateParameter("@p_return_data_flag", adBoolean, adParamInput, , True)
Set lobjADOParam = lcmdADOCommand.CreateParameter("@p_output_record_XML", adVarChar, adParamOutput, -1, strXML_RecordList_RSRef)
lobjADOParam.Size = 8000
lcmdADOCommand.Parameters.Append lobjADOParam
С последним выходным параметром ... если я не устанавливаю размер 8000, я получаю ошибку времени выполнения
"Parameter object is improperly defined. Inconsistent or incomplete information was provided".
Какой максимальный размер я могу использовать здесь в VB6 для вывода VARCHAR (MAX)? Установка размера на -1 на входе - это нормально, но не на выходной параметр.


Используйте -1 для размера параметров adLongVarChar или adLongVarWChar, а не adVarChar, как в вашем фрагменте (отсутствует Long в имени записи перечисления).
Кстати, не имеет значения, было ли направление в adParamInput или adParamOutput, как предлагает ваш вопрос, т.е. предложение проблемы с указанием направления только замедлило поиск ответов здесь.
Что такое
strXML_RecordList_RSRef? Вы пытаетесь установить значение по умолчанию или поместить возвращаемое значение в переменную? Я думаю, что лучше прекратить и получить позже сstrXML_RecordList_RSRef = lcmdADOCommand.Parameters("@p_output_record_XML").Value- Также, возможно, захочется попробоватьadLongVarWCharдля типа параметра, соответствующего Varchar (max)