是有关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
平时我都是这样查看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
平时我都是这样查看UserID的值的:
response.write( "UserID=" & UserID & "<br>" )
今天这样查看了一下:
response.write( "UserID=[" & UserID & "]<br>" )
这样,我看到了平时没留意到的地方。最后一个的输出结果是:
UserID=[laodeng ]''''在]符号前面多了和个空格
于是我将参数赋值语句改成这样子:
command.Parameters("@UserID").Value = TRIM(UserID)
测试运行。结果就不会出现那个讨厌的错误了。
唉。本人对ADO报错真是一点都不了解,怎么字符型的参数不能带有空格的?
变态,变态,真是TMD变态,害得我搞了近一天。NND
#4
要有trim的习惯。可以强制转换字符类型的。