Типы данных SQL Server и ADO с VB6 - какой размер установить для параметра VARCHAR (MAX) OUTPUT из хранимой процедуры?

Вызов хранимой процедуры из 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 на входе - это нормально, но не на выходной параметр.

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

dbmitch 15.06.2018 02:05
ReactJs | Supabase | Добавление данных в базу данных
ReactJs | Supabase | Добавление данных в базу данных
Это и есть ваш редактор таблиц в supabase.👇
Понимание Python и переход к SQL
Понимание Python и переход к SQL
Перед нами лабораторная работа по BloodOath:
0
1
727
1

Ответы 1

Используйте -1 для размера параметров adLongVarChar или adLongVarWChar, а не adVarChar, как в вашем фрагменте (отсутствует Long в имени записи перечисления).

Кстати, не имеет значения, было ли направление в adParamInput или adParamOutput, как предлагает ваш вопрос, т.е. предложение проблемы с указанием направления только замедлило поиск ответов здесь.

Другие вопросы по теме