Приложение использует значение неправильного типа для текущей операции в классическом asp

Я вызываю одну хранимую процедуру, используя следующий код:

m_objCmd.CommandText = "StoredProc_Name"
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@UserID", 3, 1, 0, UserID)
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@UserTypeID", 3, 1, 0, UserTypeID)
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@AccessToken", 202, 1, 100, AccessToken)
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@TokenExpiration", 135, 1, 0, TokenExpiration)
m_objCmd.Parameters.Append m_objCmd.CreateParameter("@RefreshToken", 202, 1, 100, RefreshToken)

rsUserData.Open m_objCmd, , adOpenStatic, adLockReadOnly  

в:

  • @UserID является типом данных 'int'
  • @UserTypeID is 'int'
  • @AccessToken является nVarchar (100)
  • @TokenExpiration is datatime (2)
  • @RefreshToken is nVarchar (100)

но здесь я получаю ошибку:

приложение использует значение неправильного типа для текущего операция.

может кто-нибудь помочь мне, пожалуйста.

4 ответов


У меня была такая же проблема всего несколько дней назад. Моя проблема заключалась в переполнении, как предлагает Кул-Тигин ниже.

Я пытался вставить огромную строку длиной 17,000+ символов, и я получил точно такую же ошибку, как и вы. Затем я решил сохранить строку в текстовом файле, и я использовал таблицу в качестве локатора файлов, так сказать.

проверьте длину значений в следующем:

  • @UserID-это тип данных 'int'
  • @UserTypeID является 'int'
  • @AccessToken is nVarchar (100)
  • @TokenExpiration-это datatime (2)
  • @RefreshToken является nVarchar (100)

Кажется, есть переполнение или неправильный тип. Например, длина AccessToken может больше, чем 100. Проверьте их все. И если необходимо, преобразуйте переменные в их подтипы (особенно строки). Некоторые сторонние компоненты могут возвращать варианты и вызывать это. т. е.

... ("@AccessToken", 202, 1, 100, CStr(AccessToken))
... ("@UserID", 3, 1, 0, CLng(UserID))
..

сегодня я решил аналогичную проблему, ограничив значение переменной datasize столбца.

например, если один из размеров столбца Varchar (500) и значение отображения содержит более 500 символов. он будет выбрасывать это исключение в ADODB (VB6.0)

вы можете решить эту проблему, увеличив размер данных столбца или ограничив значение до 500 символов в vb6.0 u может использовать Left ([variable_name],500)


возможно, ваш фрагмент кода в вашем вопросе просто неполный, но я ожидал бы увидеть эту строку также для вашего предполагаемого использования: -

 m_objCmd.CommandType = adCmdStoredProc