Asp classic 应用程序对经典asp中的当前操作使用了错误类型的值
我使用以下代码调用一个存储过程:Asp classic 应用程序对经典asp中的当前操作使用了错误类型的值,asp-classic,Asp Classic,我使用以下代码调用一个存储过程: 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.Appe
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
在上文中:
是一种“int”数据类型@UserID
为“int”@UserTypeID
是nVarchar(100)@AccessToken
是数据时间(2)@TokenExpiration
是nVarchar(100)@refreshttoken
有人能帮我吗。可能是您的问题中的代码片段不完整,但我希望这一行也能用于您的预期用途:-
m_objCmd.CommandType = adCmdStoredProc
似乎有溢出或错误的类型。例如,
AccessToken
的长度可能大于100。全部检查。
如果必要,将变量转换为它们的子类型(特别是字符串)。某些第三方组件可能会返回变体,并导致这种情况。i、 e
... ("@AccessToken", 202, 1, 100, CStr(AccessToken))
... ("@UserID", 3, 1, 0, CLng(UserID))
..
几天前我也有同样的问题。正如Kul Tigin在下面建议的那样,我的问题是溢出 我试图插入一个长度超过17000个字符的大字符串,但收到的错误与您的完全相同。然后,我选择将字符串保存在文本文件中,并将该表用作文件定位器 检查以下值的长度:
- @UserID是“int”数据类型
- @UserTypeID为“int”
- @AccessToken是nVarchar(100)
- @TokenExpiration是数据时间(2)
- @RefreshToken是nVarchar(100)
您可以通过增加列数据大小或将值限制为500个字符来解决此问题,在vb6.0中,您可以使用Left([variable_name],500)您还可以发布存储过程中使用的每个变量中的值,以及发生错误的行号。您好,我在这里发现,调用存储过程后:将记录插入数据库。但在那之后我就犯了错误。数字=3421。我不知道为什么会这样?你能帮我一下吗?请发布存储过程的代码,我们会试试看是否有什么东西会导致这样的错误。你好,Rory,解决了我的问题。这里我发送@TokenExpiration-datetime2是空值。这就是为什么,我犯了那个错误。我现在发送日期()。然后它执行时没有任何错误。感谢您的帮助。供其他人参考:如果您正在使用准备好的语句的参数,您需要在更改
.value
属性之前,将参数
对象的.Size
属性重新设置为新数据的适当值,否则,当您尝试使用大于先前值.Size
的数据设置.Value
时,将发出此错误。我在这里发现,在调用存储过程后:将记录插入数据库。但在那之后我就犯了错误。数字=3421。我不知道为什么会这样?你能帮帮我吗?可能没什么区别,但你可以试着声明输入的实际长度。您可以尝试[m_objCmd.Parameters.Append m_objCmd.CreateParameter(“@UserTypeID”,3,1,0,UserTypeID)],而不是[m_objCmd.Parameters.Append m_objCmd.CreateParameter(“@UserTypeID”,3,1,Len(UserTypeID)+1,UserTypeID)],我在这里发现,在调用存储过程之后:记录被插入数据库。但在那之后我就犯了错误。数字=3421。我不知道为什么会这样?有人能解释一下吗。