Приложение использует значение неправильного типа для текущей операции в классическом 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