在ASP中,一般通过command对象调用存储过程,根据不同情况,本文也介绍其它调用方法。为了方便说明,根据存储过程的输入输出,作以下简单分类: 1. 只返回单一记录集的存储过程 假设有以下存储过程(本文的目的不在于讲述T-SQL语法,所以存储过程只给出代码,不作说明): /*SP1*/ 复制代码 代码如下: CREATE PROCEDURE dbo.getUserList as set nocount on begin select * from dbo.[userinfo] end go
以上存储过程取得userinfo表中的所有记录,返回一个记录集。通过command对象调用该存储过程的ASP代码如下: "**通过Command对象调用存储过程** DIM MyComm,MyRst Set MyComm = Server.CreateObject("ADODB.Command") MyComm.ActiveConnection = MyConStr "MyConStr是数据库连接字串 MyComm.CommandText = "getUserList" "指定存储过程名 MyComm.CommandType = 4 "表明这是一个存储过程 MyComm.Prepared = true "要求将SQL命令先行编译 Set MyRst = MyComm.Execute Set MyComm = Nothing 存储过程取得的记录集赋给MyRst,接下来,可以对MyRst进行操作。
在以上代码中,CommandType属性表明请求的类型,取值及说明如下: -1 表明CommandText参数的类型无法确定 1 表明CommandText是一般的命令类型 2 表明CommandText参数是一个存在的表名称 4 表明CommandText参数是一个存储过程的名称 还可以通过Connection对象或Recordset对象调用存储过程,方法分别如下: 复制代码 代码如下: "**通过Connection对象调用存储过程** DIM MyConn,MyRst Set MyConn = Server.CreateObject("ADODB.Connection") MyConn.open MyConStr "MyConStr是数据库连接字串 Set MyRst = MyConn.Execute("getUserList",0,4) "最后一个参断含义同CommandType Set MyConn = Nothing
复制代码 代码如下: "**通过Recordset对象调用存储过程** DIM MyRst Set MyRst = Server.CreateObject("ADODB.Recordset") MyRst.open "getUserList",MyConStr,0,1,4 "MyConStr是数据库连接字串,最后一个参断含义与CommandType相同