参数集合 (ADO)

包含 Command 对象的所有 Parameter 对象。

备注

Command 对象具有由 Parameter 对象组成的 Parameters 集合。

对 Command 对象的 Parameters 集合使用 Refresh 方法,可检索 Command 对象中指定的存储过程或参数化查询的提供程序参数信息。 某些提供程序不支持存储过程调用或参数化查询;若使用此类提供程序时,针对 Parameters 集合调用 Refresh 方法,则将返回错误。

如果尚未定义自己的 Parameter 对象并且在调用 Refresh 方法之前访问了 Parameters 集合,则 ADO 将自动调用该方法并填充集合。

如果知道与存储过程或要调用的参数化查询关联的参数属性,则可以最大程度地减少对提供程序的调用,从而提升性能。 使用 CreateParameter 方法,通过适当的属性设置创建 Parameter 对象,然后使用 Append 方法将这些对象添加到 Parameters 集合中。 通过此操作,则可以设置并返回参数值,而无需调用提供程序以获得参数信息。 如果要写入不提供参数信息的提供程序,则必须使用此方法手动填充 Parameters 集合才能使用参数。 如有必要,请使用 Delete 方法从 Parameters 集合中删除 Parameter 对象。

若 Recordset 关闭,则 Recordset 的 Parameters 集合中的对象将超出范围(因此变得不可用)。

使用 Command 调用存储过程时,存储过程的返回值/输出参数会按如下方式检索:

  1. 调用没有参数的存储过程时,应先针对 Parameters 集合调用 Refresh 方法,然后再针对 Command 对象调用 Execute 方法。

  2. 在用参数调用存储过程并通过 Append 将参数显式追加到 Parameters 集合时,返回值/输出参数应追加到 Parameters 集合。 必须先将返回值追加到 Parameters 集合中。 使用 Append 按定义顺序将其他参数添加到 Parameters 集合中。 例如,存储过程 SPWithParam 有两个参数。 第一个参数 InParam 是定义为 adVarChar (20) 的输入参数,第二个参数 OutParam 是定义为 adVarChar (20) 的输出参数。 可以使用以下代码检索返回值/输出参数。

    ' Open Connection Conn  
    set ccmd = CreateObject("ADODB.Command")  
    ccmd.Activeconnection= Conn  
    
    ccmd.CommandText="SPWithParam"  
    ccmd.commandType = 4 'adCmdStoredProc  
    
    ccmd.parameters.Append ccmd.CreateParameter(, adInteger, adParamReturnValue, , NULL)   ' return value  
    ccmd.parameters.Append ccmd.CreateParameter("InParam", adVarChar, adParamInput, 20, "hello world")   ' input parameter  
    ccmd.parameters.Append ccmd.CreateParameter("OutParam", adVarChar, adParamOutput, 20, NULL)   ' output parameter  
    
    ccmd.execute()  
    
    ' Access ccmd.parameters(0) as return value of this stored procedure  
    ' Access ccmd.parameters("OutParam") as the output parameter of this stored procedure.  
    
    
  3. 调用具有参数的存储过程并通过调用 Parameters 集合的 Item 方法配置参数时,可从 Parameters 集合中检索存储过程的返回值/输出参数。 例如,存储过程 SPWithParam 有两个参数。 第一个参数 InParam 是定义为 adVarChar (20) 的输入参数,第二个参数 OutParam 是定义为 adVarChar (20) 的输出参数。 可以使用以下代码检索返回值/输出参数。

    ' Open Connection Conn  
    set ccmd = CreateObject("ADODB.Command")  
    ccmd.Activeconnection= Conn  
    
    ccmd.CommandText="SPWithParam"  
    ccmd.commandType = 4 'adCmdStoredProc  
    
    ccmd.parameters.Item("InParam").value = "hello world" ' input parameter  
    ccmd.execute()  
    
    ' Access ccmd.parameters(0) as return value of stored procedure  
    ' Access ccmd.parameters(2) or ccmd.parameters("OutParam") as the output parameter.  
    

本部分包含以下主题。

另请参阅

Append 方法 (ADO)
CreateParameter 方法 (ADO)
参数对象