请教[应用程序在当前操作中使用了错误类型的值]的解决办法

时间:2021-01-12 08:10:37
最近小弟使用asp访问SQL数据库时,遇到了一个麻烦的事情。
是有关asp调用存储过程的。
存储过程如下:
CREATE PROCEDURE pi_GerUserInfo
(
@UserID VARCHAR(30),
)
AS 
SELECT  * FROM User WHERE UserID = @UserID
GO

调用它的主要ASP代码如下:
DIM connection, command
SET connection = Server.CreateObject( "ADODB.Connection" )
SET command = Server.CreateObject( "ADODB.Command" )

connection.ConnectionString = "Driver={sql server};server=TNSO01;database=TNSODB;Trusted_connection=yes"
command.CommandText = "pi_GerUserInfo"
command.CommandType = adcmdstoredproc
command.Parameters.Append( command.CreateParameter( "@UserID", adVarChar, adParamInput, 30 ) )

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''就是在下面这一句出现错误
command.Parameters("@UserID").Value = UserID 'UserID是在函数外部定义的变量

connection.Open
command.ActiveConnection = connection
command.Execute()
connection.Close()

SET command = Nothing
SET connection = Nothing

执行这段代码的时候,就会出现下面这样的错误:
ADODB.Parameter 错误 '800a0d5d' 

应用程序在当前操作中使用了错误类型的值。 

在出现错误的那一语句,行为感觉特别奇怪。
如果从一个变量给@UserID赋值,就会出错,如:
command.Parameters("@UserID").Value = UserID’这样就会出错
但是,如果给@UserID赋常量值的话,调用就会成功,如:
command.Parameters("@UserID").Value = "laodeng"

并且UserID是有值的。如使用下面的代码就可以把UserID的值打印出来:
response.write( "UserID=" & UserID ) '输入结果会是UserID=laodeng

请问这个是什么原因造成的?

小弟在此谢过了。

4 个解决方案

#1


有个工具叫baidu 听说比较好用

#2


google.com和baidu.com都找过了,找了半天都没有找到可以解决问题的办法。真是晕死了。

#3


问题解决了,觉得结果有点变态的感觉。

平时我都是这样查看UserID的值的:
response.write( "UserID=" & UserID & "<br>" )
今天这样查看了一下:
response.write( "UserID=[" & UserID & "]<br>" )
这样,我看到了平时没留意到的地方。最后一个的输出结果是:
UserID=[laodeng ]''''在]符号前面多了和个空格

于是我将参数赋值语句改成这样子:
command.Parameters("@UserID").Value = TRIM(UserID)
测试运行。结果就不会出现那个讨厌的错误了。

唉。本人对ADO报错真是一点都不了解,怎么字符型的参数不能带有空格的?
变态,变态,真是TMD变态,害得我搞了近一天。NND

#4


要有trim的习惯。可以强制转换字符类型的。

#1


有个工具叫baidu 听说比较好用

#2


google.com和baidu.com都找过了,找了半天都没有找到可以解决问题的办法。真是晕死了。

#3


问题解决了,觉得结果有点变态的感觉。

平时我都是这样查看UserID的值的:
response.write( "UserID=" & UserID & "<br>" )
今天这样查看了一下:
response.write( "UserID=[" & UserID & "]<br>" )
这样,我看到了平时没留意到的地方。最后一个的输出结果是:
UserID=[laodeng ]''''在]符号前面多了和个空格

于是我将参数赋值语句改成这样子:
command.Parameters("@UserID").Value = TRIM(UserID)
测试运行。结果就不会出现那个讨厌的错误了。

唉。本人对ADO报错真是一点都不了解,怎么字符型的参数不能带有空格的?
变态,变态,真是TMD变态,害得我搞了近一天。NND

#4


要有trim的习惯。可以强制转换字符类型的。