调用数据库存储过程 
  <%Set Dataconn = Server.CreateObject("ADODB.Connection") 
  '建立连接对象 
  Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;APP=Microsoft(R) Developer     Studio;WSID=APP_SERVER;Regional=Yes" 
  Set cmdTemp = Server.CreateObject("ADODB.Command") 
  '建立命令对象 
  Set rst = Server.CreateObject("ADODB.Recordset") 
  '建立记录集对象 
  cmdTemp.CommandText = "dbo.pd_test" '存储过程名称 
  cmdTemp.CommandType = 4 
  '命令类别为4,表示为存储过程 
  Set cmdTemp.ActiveConnection = Dataconn 
  Set tmpParam = cmdTemp.CreateParameter("Return Value", 3, 4, 4) 
  cmdTemp.Parameters.Append tmpParam 
  Set tmpParam = cmdTemp.CreateParameter("@BeginDate", 135, 1, 16, riqi) 
  '创建输入参数对象 
  cmdTemp.Parameters.Append tmpParam 
  rst.Open cmdTemp, , 1, 3 
  '生成查询结果 
%> 
  这里调用的存储过程为pd_test,这种是ADO中提供的标准方法,但存在一个问题,就是当在存储过程中有两个以上的SELECT语句,但从逻辑上又不可能同时执行的时候,ADO会提示你存储过程中SELECT语句太多,解决方法是直接用ADO的CONNECTION对象的EXECUTE方法直接执行存储过程,如下: 
<% 
  Set Dataconn = Server.CreateObject("ADODB.Connection") 
  '建立连接对象 
  Dataconn.Open "DSN=SinoTrans;SERVER=APP_SERVER;UID=sa;PWD=;APP=Microsoft(R) Developer Studio;WSID=APP_SERVER;Regional=Yes" 
  ss = "EXECUTE dbo.pd_test " & "'" & riqi1 & "'" 
  Set rs = dataconn.Execute(ss) 
%> 

解决方案 »

  1.   

    能否完全用sql语句实现呢?比如把结果赋给一个变量?
      

  2.   

    Command对象使用Command对象,你可以执行带参数的存储过程,SQL查询,SQL语句。你可以使用Command对象接收Recordset对象。<% Set MagicCMD = Server.CreateObject(“ADODB.Command”) %>集合ParametersParameters集合是Parameter对象的集合(参看后面的“Parameter对象”)。Parameter对象用于执行带参数的SQL查询或向一SQL存储过程传递或接收参数。PropertiesProperties集合是Property对象的集合(参看后面的“Preperty对象”)。不同的数据提供者比如Microsoft SQL Server和Microsoft Access在Command对象的Properties集合里具有不同的属性。这些属性影响Command对象的执行方式。属性CreateParameter([Name] , [type] , [Direction] , [Size] , [Value] )创建Command对象要使用的新参数。Name是新参数的名称。Type是该参数的数据类型。你可以使用下表所示的任何数据类型:常数 值 描述
    ==============================================================================
    adBigInt 20 8字节有符号整数
    adBinary 128 二进制值
    adBoolean 11 布尔值
    adBSTR 8 Null-中断字符串(Unicode)
    adChar 129 字符串值
    adCurrency 6 货币值
    adDate 7 日期值
    adDBDate 133 日期值(yyyymmdd)
    adDBTime 134 时间值(hhmmss)
    adDBTimeStamp 135 日期时间值(yyyymmddhhmmss)
    adDecimal 14 具有固定的精度和范围的扩展数字型。
    adDouble 5 双精度浮点数值
    adEmpty 0 空值
    adError 10 32位错误码
    adGUID 72 全球唯一的标志码
    adIDispatch 9 指向一个OLE对象Idispatch的指针
    adInteger 3 4字节有符号整数
    adIUnknown 13 指向一个OLE对象Iunkown的指针
    adLongVarBinary 205 长二进制值
    adLongVarChar 201 长字符串值
    adLongVarWChar 203 长NULL-中断字符串值
    adNumeric 131 具有固定的精度和范围的扩展数字型。
    adSingle 4 单精度浮点值
    adSmallInt 2 2字节有符号整数
    adTinyInt 16 1字节有符号整数
    adUnsignedBigInt 21 8字节无符号整数
    adUnsignedInt 19 4字节无符号整数
    adUnsignedSmallInt 18 2字节无符号整数
    adUnsignedTinyInt 17 1字节无符号整数
    adUserDefined 132 未定义变量
    adVarBinary 204 二进制值
    adVarchar 200 字符串值
    adVariant 12 OLE自动变量
    adVarWchar 202 NULL-中断Unicode字符串
    adWchar 130 NULL-中断Unicode字符串
    ==============================================================================Direction确定参数是输入参数,输出参数或存储过程的返回值,下表描述了所有你可以使用的Direction值:常数 值 描述
    ==============================================================================
    adParamInput 1 输入参数(缺省值)
    adParamOutput 2 输出参数
    adParamInputOutput 3 输入/输出参数
    adParamReturnValue 4 返回值
    ==============================================================================Size是参数的最大长度,以字节或字符为单位。Value是参数的值。Execute [RecordAffected] , [Parameters] , [Options] 或Execute ([RecordAffected] , [Parameters] , [Options])执行包含在CommandText属性中的SQL查询,SQL语句或SQL存储过程。当要返回数据集时,使用带括号的第二中Execute方法。在该命令执行后,RecordAffected变量内包含该命令所影响的记录的数目。Parameters是参数数组,可以覆盖以前添加到Command对象中的变量。使用Options,你可以使该命令执行的更有效,因为你利用发送给数据提供者(比如,SQL Server)有关要执行命令的类型。Options的值如下:常数 描述
    ============================================================================== 
    adCmdText 把CommandText作为一个命令的文本定义执行,比如SQL语句。
    adCmdTable 把CommandText作为表的名称执行。
    adCmdStoreProc 把CommandText作为存储过程执行。
    adCmdUnknown 未知的命令(缺省值)。
    ==============================================================================Open [ConnectionString],[UserID],[Password]打开一个到数据源的连接。ConnectionString是数据源的名称(DSN)或者是包含以分号隔开的参数和值对的连接字符串。比如下面就是适用于SQL Server的例子:dsn=MyDatabase;uid=MyLoginName;pwd=MyPassword你可以使用在下表内的参数和值对:参数 值
    ============================================================================== 
    Provider 数据提供者的名称 
    Data Source 数据源的名称(比如,一个SQL Server的ODBC数据源)
    User 在打开数据连接时所用的用户名
    Password 在打开数据连接时所用的密码
    File Name 已经预设好连接信息的与提供者相关的文件名
    ==============================================================================UserId是在打开数据连接时所要用的用户名。Password是在打开数据连接时所要用的密码。
      

  3.   

    OpenSchema(queryType,[Criteria])用于返回有关数据库整体结构的信息(比如,它包含的Table和Column)。这些概要信息存入了Recordset对象中。QueryType是要执行的概要查询(如下表所示)。Criteria是在概要查询上的一系列限制。
    ==============================================================================
    QueryType Criteria
    ============================================================================== 
    adSchemaAsserts CONSTRAINT_CATALOG
    CONSTRAINT_SCHEMA
    CONSTRAINT_NAME
     
    adSchemaCatalogs CATALOG_NAME
    adSchemaCharacterSets
    CHARACTER_SET_CATALOG
    CHARACTER_SET_SCHEMA
    CHARACTER_SET_NAME
     
    adSchemaCheckConstraints CONSTRAINT_CATALOG
    CONSTRAINT_SCHEMA
    CONSTRAINT_NAME
    adSchemaCollation COLLATION_CATALOG
    COLLATION_SCHEMA
    COLLATION_NAMEadSchemaColumnDomainUsage DOMAIN_CATALOG
    DOMAIN_SCHEMA
    DOMAIN_NAME
    COLUMN_NAMEadSchemaColumnPrivileges TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAME
    COLUMN_NAME
    GRANTOR
    GRANTEE
     
    adSchemaColumns TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAME
    COLUMN_NAME
     
    adSchemaConstraintColumnUsage TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAME
    COLUMN_NAME
     
    adSchemaConstraintTableUsage TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAMEadSchemaForeignKeys PK_TABLE_CATALOG
    PK_TABLE_SCHEMA
    PK_TABLE_NAME
    FK_TABLE_CATALOG
    FK_TABLE_SCHEMA
    FK_TABLE_NAMEadSchemaIndexs TABLE_CATALOG
    TABLE_SCHEMA
    INDEX_NAME
    TYPE
    TABLE_NAMEadSchemaKeyColumnUsage CONSTRAINT_CATALOG
    CONSTRAINT_SCHEMA
    CONSTRAINT_NAME
    TABLE_SCHEMA
    TABLE_NAME
    COLUMN_NAMEadSchemaPrimaryKeys PK_TABLE_CATALOG
    PK_TABLE_SCHEMA
    PK_TABLE_NAMEadSchemaProcedureColumns PROCEDURE_CATALOG
    PROCEDURE_SCHEMA
    PROCEDURE_NAME
    COLUMN_NAMEadSchemaProcedureParameters PROCEDURE_CATALOG
    PROCEDURE_SCHEMA
    PROCEDURE_NAME
    PARAMETER_NAME
     
    adSchemaProcedures PROCEDURE_CATALOG
    PROCEDURE_SCHEMA
    PROCEDURE_NAME
    PARAMETER_TYPEadSchemaProviderTypes DATA_TYPE
    BEST_MATCH
     
    adSchemaReferentialConstraints CONSTRAINT_CATALOG
    CONSTRAINT_SCHEMA
    CONSTRAINT_NAMEadSchemaSchemata CATALOG_NAME
    SCHEMA_NAME
    SCHEMA_OWNERadSchemaSQLLanguages 没有
     
    adSchemaStatistics TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAMEadSchemaTableConstraints CONSTRAINT_CATALOG
    CONSTRAINT_SCHEMA
    CONSTRAINT_NAME
    TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAME
    CONSTRAINT_TYPE
     
    adSchemaTablePriviledge TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAME
    GRANTOR
    GRANTEEadSchemaTables TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAME
    TABLE_TYPEadSchemaTranslations TRANSLATION_CATALOG
    TRANSLATION_SCHEMA
    TRANSLATION_NAMEadSchemaUsagePrivileges OBJECT_CATALOG
    OBJECT_SCHEMA
    OBJECT_NAME
    OBJECT_TYPE
    GRANTOR
    GRANTEEadSchemaViewColumnUsage VIEW_CATALOG
    VIEW_SCHEMA
    VIEW_NAME
     
    adSchemaViewTableUsage VIEW_CATALOG
    VIEW_SCHEMA
    VIEW_NAME
     
    adSchemaViews TABLE_CATALOG
    TABLE_SCHEMA
    TABLE_NAME
    ==============================================================================
      

  4.   

    楼上还是没明白我的意思,我是说完全用SQL语句实现,或者将返回结果赋值给变量,或者插入一张表也行。
      

  5.   

    RollbackTrans防止在当前事务事件中的所有数据库的变化得以进行。一般在调用BeginTrans方法后执行。属性Attributes指明事务过程的属性。下表中的常数可以读或设置。常数 描述
    ============================================================================== 
    adXactCommitRetaining 指明在调用CommitTrans方法时会自动开始一个新的事务过程。
    adXactAbortRetaining 指明在调用RollbackTrans方法时会自动开始一个新的事务过程。
    ============================================================================== 
    CommandTimeOut
    指明所有依靠数据连接的对象等待数据提供者回应的时间长度,以秒为单位。缺省时该属性的值为30。如果你设置该属性的值为0,ADO会永远的等待服务器的回应。ConnectionString
    指明数据源(DSN)的名称或者包含以分号隔开的参数和值对的连接字符串。比如,下面的例子适用于SQL Server。dsn=MyDatabase;uid=MyLoginName;pwd=MyPassword 
    你可以在连接字符串中使用在下表所示的参数和值对。参数 值
    ==============================================================================  
    Provider 数据提供者的名称
    Data Source 数据源的名称(比如,一个SQL Server的ODBC数据源)
    User 在打开数据连接时所用的用户名
    Password 在打开数据连接时所用的密码
    File Name 已经预设好连接信息的与提供者相关的文件名
    ==============================================================================  
    ConnectionTimeOut指明Connection对象试着建立一个到数据提供者的连接时会等待的时间,以秒为单位。缺省时该属性的值为15秒,如果你设置该值为0,Connetion对象将会永久等待连接。CursorLocation指明使用那个游标库。该属性具有下表所示的值:常数 描述
    ==============================================================================   
    adUseClient 使用客户端的游标
    adUseServer 使用服务器或驱动器的游标(缺省值)。
    DefaultDatabase 指明连接时使用的缺省数据库。当已经指定缺省数据库时,你就不必在所有的SQL字符串内包含数据库名称。
    IsolationLevel 指明连接的隔离等级。只有在调用BeginTrans方法后,该属性的新改变值才有效。该属性具有下表的值:
    常数 描述
    ==============================================================================   
    adXactUnspecified 当数据提供者使用的隔离等级与你指定的不同时,该属性返回该值。
    adXactChaos 指明你不能覆盖目前正由其他的隔离事务过程使用的改变。
    adXactBrowse 指明你可以查看在其他事务过程中还没有确认的变化。
    adXactReadUncommitted 和adXactBrowse一样。
    adXactCursorStability 指明你不能查看在其他事务过程中还没有确认的变化(缺省值)。
    adXactReadComitted 和adXactCursorStability一样
    adXactRepeatableRead 除了允许重新查询以获得新的记录集之外,和adXactCursorStability一样 adXactIsolated 指明所有的事务过程都与其他事务过程隔离。
    adXactSerialized 同adXactIsolated。
    ==============================================================================  Mode指明在连接中改变数据可用的权限。该属性具有如下表所示的值:常数 描述
    ==============================================================================   
    adModeUnknown 未定(缺省值)。
    adModeRead 只读权限。
    adModeWrite 只写权限。
    adModeReadWrite 可读、可写权限。
    adModeShareDenyRead 防止其他人用读权限打开连接。
    adModeShareDenyWrite 防止其他人用写权限打开连接。
    adModeShareExclusive 防止其他人用读或写权限打开连接。
    adModeShareDenyNone 防止其他人用任何权限打开连接。
    ==============================================================================  Provider指明连接的数据提供者名称。缺省时,该属性的值为MSDASQL(Microsoft OLEDB ODBC 数据提供者)。State在连接对象使用异步传输(用adRunAsync)时使用。返回连接对象当前的状态。这个属性具有下表所示的值。常数 描述
    ==============================================================================   
    adStateClosed 对象已经关闭。
    adStateOpen 对象处于打开状态。
    ==============================================================================  Version
    以字符串形式返回当前的ADO版本。
      

  6.   

    误解了,呵呵,不用ASP语句,用SQL语句实现。或者将返回结果赋值给变量,或者将结果插入一张表也行。
      

  7.   

    create proc Cs
         @Result varchar(10) output
    as
       select @Result='结果'
    go--declare @str varchar(10)
    --exec  Cs @Result=@str out
    --select @str
      

  8.   

    create proc Cs    --//建立一个存储过程叫Cs
         @Result varchar(10) output  --//有一个参数@Result
    as
       select @Result='结果'  --//返回一个结果,你能在ASP页面里得到
    go
      

  9.   

    最简单的
    dim rs as adodb.recordsetset rs=cnx.execute "exec 存储过程名称"