这是我的存储过程...
alter PROCEDURE ReplyToEmailConfirmation
@uniqueKey varchar(36)
AS
BEGIN
Print 'Hello World!'
END
这是代码......
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
.ActiveConnection = getConfigValue("ASPClassicConnectionString")
.CommandType = adCmdStoredProc
.CommandText = "[ReplyToEmailConfirmation]"
.Parameters.Append .CreateParameter("@uniqueKey", adVarChar, adParamInput, 36, "dc8d8bfd-ea3a-4ad9-9f2d-92831eb2655a")
End With
cmd.Execute
这是错误......
ADODB.Command错误' 800a0bb9'
参数类型错误,超出可接受的范围,或者是 相互冲突。
我如何让它工作?目的是使用adGUID
,但我想我会尝试adVarChar
缩小错误范围。
答案 0 :(得分:3)
如果你read the documentation for CreateParameter()
变得清晰;
如果在Type参数中指定可变长度数据类型,则必须先传递Size参数或设置Parameter对象的Size属性,然后再将其附加到Parameters集合;否则,会发生错误。
当您传递VARCHAR
“可变长度”数据类型时,您必须在调用Size
时指定CreateParameter()
。
Dim cmd
Set cmd = Server.CreateObject("ADODB.Command")
With cmd
'Let the cmd deal with the connection.
.ActiveConnection = getConfigValue("ASPClassicConnectionString")
.CommandText = "[ReplyToEmailConfirmation]"
.CommandType = adCmdStoredProc
Call .Parameters.Append(.CreateParameter("@uniqueKey", adVarChar, adParamInput, 100))
.Parameters("@uniqueKey") = "dc8d8bfd-ea3a-4ad9-9f2d-92831eb2655a"
End With
Call cmd.Execute()
'Tidy up memory
Set cmd = Nothing
还包括adCmdStoredProc
adCmdUnknown
,它告诉ADO将此命令解释为存储过程调用,没有它,默认值为ADODB.Connection
,这意味着ADO必须尝试锻炼命令是的,虽然很小但增加了不必要的开销。
也不是实例化ADO.Command
对象只是为了执行ADODB.Connection
对象的忠实粉丝,这意味着你必须自己管理关闭ADODB.Command
。而是让getConfigValue("ASPClassicConnectionString")
为你做,通过传递一个连接字符串让它创建连接并自行销毁它。假设ActiveConnection
返回连接字符串,您可以将其直接传递给ADODB.Command
,METADATA
将实例化连接并处理它。
CommandType
(解释如何使用import React, { Component } from 'react';
class Example extends Component {
componentDidMount() {
document.addEventListener('deviceready', this.deviceReady);
}
componentWillUnmount() {
document.removeEventListener('deviceready', this.deviceReady);
}
deviceReady () {
// Do some stuff
}
render() {
return (
<div>
<p>Example</p>
</div>
);
}
}
export default Example;
包含命名常量) 答案 1 :(得分:0)
我没有为adovbs.inc
,adCmdStoredProc
和adVarChar
常量添加adGUID
。卫生署。