与Connection对象类似,Command对象也用来执行SQL语句和返回一个Recordset,如程序清单6.10。然而,使用Command对象的最大优点在于它能传送参数出入存储过程。不仅返回一个return值,SQL Server的存储过程还可以有input、output和inputoutput参数。使用ADO的Command对象,就可使用SQL Server存储对象的所有类型参数。
 (9) 程序清单 6.10: 从Command对象返回一个Recordset
  '---创建Connection对象
   set objConn = Server.CreateObject (" ADODB.Connection")
  '---创建Command对象
   set objCmd = Server.CreateObject ( " ADODB.Command" )
  '---创建Recordset对象
   set objRS = Server.CreateObject ( "ADODB.Recordset " )
  '---通过存储在Application中连接字符串打开连接
   objConn.Open Application("ConnString")
  '---设置Command对象的ActiveConnection 属性将其与Command对象关联。
   set objCmd.ActiveConnection = objConn
   strSQL = "SELECT * FROM titles"
   set objRS = objCmd.Execute(strSQL)

   程序清单6.11显示使用ADO如何从存储过程ByRoyalty中获取记录集。该存储过程获取版税大于某百分数的作者数据集。通过传值给percentage参数来指定百分数。
 (10) 程序清单6.11: 执行带参数的存储过程
   set objConn = Server.CreateObject ( " ADODB.Connection " )
   set objCmd = Server.CreateObject ( " ADODB.Command" )
   set objRS = Server.CreateObject ( "ADODB.Recordset " )
   objConn.Open Application("ConnString")
   set objCmd.ActiveConnection = objConn

  '---指定Command对象将执行的存储过程名
   objCmd.CommandText = "ByRoyalty"
   objCmd.CommandType = adCmdStoredProc

  '---指定存储过程参数的值
   objCmd.Parameters.Append
   objCmd.CreateParameter("percentage", adInteger, adParamInput,,50)
   set objRS = objCmd.Execute
  注解:其它注释见前面程序清单6.12
  让我们将程序清单中的代码拆开以便检查各部分工作。首先,代码创建三个所需对象:
  Connection对象与数据库通讯,Command对象执行存储过程,Recordset对象获取返回的记录集。然后打开Connection对象,并通过设置Command对象的ActiveConnection 属性将其与Command对象关联。
  在准备代码完成之后,设置CommandText属性以指定Command对象将执行的存储过程名。因为Command对象可以执行SQL语句、打开表和执行存储过程,所以需要告诉它做什么。为此在本例中,设置CommandType属性为adCmdStoredProc 。
  现在指定存储过程参数的值。但在此之前,需要考虑到Command对象的Parameters集仍为空。有两条途径填充Parameters集:使用Refresh方法使代码变小。但是,Refresh方法将负担交给数据提供者以检查参数个数、名称、数据类型、大小和方向(即Input、Output、InputOutput或Return)。让数据提供者做这些的问题在于需要大量资源。
  使用Refresh方法的替代方法是一个一个地创建参数并手工地将其加入Parameters集。这条途径必须指定参数名、数据类型、大小、方向和值(如果它是Input或InputOutput参数)。这看来可能有许多工作,但它提高了程序性能。Command.CreateParameter方法的语法:
  Set objParm = ObjCmd.CreateParameter(param_name,datatype, direction, size, value)
  其中:
 ・ param_name是SQL Server所知的参数名;
 ・ datatype是参数要求的数据类型;
 ・ Direction是四个值之一:adParamInput、adParamOutput、adParamInputOutput或adParamReturnalue;
 ・ size指明基于字符的数据类型长度;
 ・ value是为Input或InputOutput参数传入的值。
  在参数创建并存入objParm 变量之后,就可使用Append方法加入到Parameters集。不要忘了在设置好Command对象的属性和参数之后,即可从Command对象的Execute方法获得一个Recordset对象。