| 
| 
| 浅谈在ASP中调用SQL SERVER中的存储过程 |  
| 时间:2011-04-23  作者:秩名 |  
|  |  
|  |  
| strConnString= 'driver={SQL Server};server=(local);uid=sa;pwd=;database=xk' MyComm.ActiveConnection =strconnstring 'strconnstring是数据库连接字串
 MyComm.CommandText = 'p_student''指定存储过程名
 MyComm.CommandType = 4 '表明这是一个存储过程
 MyComm.Prepared = true '要求将SQL命令先行编译
 Set MyRst = MyComm.Execute /**存储过程取得的记录集赋给MyRst,接下来,可以对MyRst进行操作,如记录的增、删、改等操作**/
 Set MyComm = Nothing
 2)有返回值的存储过程。设有一张表student,通过创建存储过程来删除表中的所有记录,如果在delete顺利执行时,返回1,否则返回0,并进行回滚操作。然后利用ASP调用带返回值的存储过程并取得返回值。实现这种功能的存储过程所对应的代码如下:
 CREATE PROCEDURE p_delstudent
 as
 begin
 BEGINTRANSACTION
 delete from student
 IF @@error=0
 begin
 COMMITTRANSACTION
 return 1
 end
 ELSE
 begin
 ROLLBACKTRANSACTION
 return 0
 end
 return
 end
 go
 此时为了在ASP中取得返回值,需要利用Parameters集合来声明参数。此ASP代码如下:
 DIM MyComm,MyPara,strconnstring /*定义变量*/
 Set MyComm =Server.CreateObject('ADODB.Command') /*创建command对象*/
 strConnString= 'driver={SQL Server};server=(local);uid=sa;pwd=;database=xk'
 MyComm.ActiveConnection =strconnstring 'strconnstring是数据库连接字串
 MyComm.CommandText = 'p_delstudent''指定存储过程名
 MyComm.CommandType = 4 '表明这是一个存储过程
 MyComm.Prepared = true '要求将SQL命令先行编译
 MyComm.Parameters.AppendMyComm.CreateParameter('RETURN',2,4)
 MyComm.Execute
 '取得返回值
 DIM retValue
 retValue = MyComm(0) '或retValue = MyComm.Parameters(0)
 Set MyComm = Nothing
 说明:在MyComm.CreateParameter('RETURN',2,4)中,各参数的含义如下:
 第一个参数('RETURE')为参数名。论文检测。参数名可以任意设定,但一般应与存储过程中声明的参数名相同。此处是返回值,我习惯上设为'RETURE';
 第二个参数(2),表明该参数的数据类型。论文检测。具体的类型代码请参阅ADO参考。当其值为2时表示该参数的类型为adSmallInt。
 第三个参数(4),表明参数的性质,此处4表明这是一个返回值。此参数取值的说明如下:
 0 : 类型无法确定; 1: 输入参数;2: 输入参数;3:输入或输出参数;4: 返回值
 3)有输入参数和输出参数的存储过程。在ADO中可能通过command对象对存储过程的访问,并且它可以直接执行SQL服务器的存储过程,而命令中所需要的参数可以借助于其属性Pamaters来进行处理。在进行大量数据处理时,常使用带输入输出参数的存储过程。如已知student表中的stuno,便可得该学生的stuname。所对应的存储过程如下:
 CREATE PROCEDURE p_getstuName
 @stuno char(6), @stuname varchar(10) output
 as
 begin
 if @stuno isnull return
 select @stuname=usernamefrom student where stuno=@stuno
 return
 end
 go
 调用该存储过程的ASP代码如下:
 DIM MyComm,stuno,stuname
 Set stuno =’200001’
 Set MyComm =Server.CreateObject('ADODB.Command')
 MyComm.ActiveConnection='driver={SQL Server};server=(local);uid=sa;pwd=;database=xk'
 MyComm.CommandText = 'p_getstuname''指定存储过程名
 MyComm.CommandType = 4 '表明这是一个存储过程
 MyComm.Prepared = true '要求将SQL命令先行编译
 '声明参数
 MyComm.Parameters.appendMyComm.CreateParameter('@stuno',129,1,6,stuno)
 MyComm.Parameters.appendMyComm.CreateParameter('@stuname',129,2,10)
 MyComm.Execute
 '取得出参
 UserName = MyComm(1)
 Set MyComm = Nothing
 注意:由以上代码可知,声明输入参数时需要5个参数,声明输出参数时需要4个参数。它们分别代表的含义是:参数名、参数数据类型、参数类型、数据长度、参数值。只是声明输出参数时,没有最后一个参数,参数值而已。另外在声明参数时,顺序一定要与存储过程中定义的顺序相同,而且各参数的数据类型、长度也要与存储过程中定义的相同。
 3、结束语
 ASP对SQL SERVER存储过程的调用主要有两种方法。而根据输入、输出参数、返回值的情况可能有多种,而本文仅对返回单一记录集、返回值、同时有输入输出参数等情况作了简单的介绍,更深入的知识还有待进一步学习,只要充分利用好它们,会为利用ASP+SQL SERVER进行项目开发增添不少光彩。
 
 
 参考文献:
 [1]ASP+SQL SERVER项目开发实践 黄雷 铁道出版社(2006)
 [2]SQL SERVER数据库开发实例解析 赛奎春 机械工业出版社(2006)
 [3]网络程序设计ASP 尚俊杰 清华大学出版社
 [4]SQL SERVER2000数据库及应用 徐人凤等 高等教育出版社
 [5] 经验总结:ASP与存储过程解析 北大青鸟湘计立德
 
  2/2   首页 上一页 1 2 |  |  |  |