网站导航免费论文 原创论文 论文搜索 原创论文 网学软件 学术大家 资料中心 会员中心 问题解答 原创论文 大学论文导航 设计下载 最新论文 下载排行 原创论文 论文源代码
返回网学首页
网学联系
最新论文 推荐专题 热门论文 素材专题
当前位置: 网学 > 编程文档 > ASP.net > 正文

ASP基础之存储过程应用全接触(下)

来源:http://myeducs.cn 联系QQ:点击这里给我发消息 作者: 用户投稿 来源: 网络 发布时间: 13/01/06

ASP中,一般通过command对象调用存储过程,根据不同情况,本文也介绍其它调用方法。接上篇>>

为了方便说明,根据存储过程的输入输出,作以下简单分类:

5. 同时具有返回值、输入参数、输出参数的存储过程

前面说过,在调用存储过程时,声明参数的顺序要与存储过程中定义的顺序相同。还有一点要特别注意:如果存储过程同时具有返回值以及输入、输出参数,返回值要最先声明。

为了演示这种情况下的调用方法,我们改善一下上面的例子。还是取得ID为1的用户的用户名,但是有可能该用户不存在(该用户已删除,而userid是自增长的字段)。存储过程根据用户存在与否,返回不同的值。此时,存储过程和ASP代码如下:

  1. *SP5*/   
  2. CREATE PROCEDURE dbo.getUserName   
  3. --为了加深对"顺序"的印象,将以下两参数的定义顺序颠倒一下   
  4. @UserName varchar(40) output,   
  5. @UserID int   
  6. as   
  7. set nocount on   
  8. begin   
  9. if @UserID is null return   
  10. select @UserName=username   
  11. from dbo.[userinfo]   
  12. where userid=@UserID   
  13. if rowcount> 0   
  14. return 1   
  15. else   
  16. return 0   
  17. return   
  18. end   
  19. go  

  1. ''**调用同时具有返回值、输入参数、输出参数的存储过程**   
  2. DIM MyComm,UserID,UserName   
  3. UserID = 1   
  4. Set MyComm = Server.CreateObject("ADODB.Command")   
  5. with MyComm   
  6. .ActiveConnection = MyConStr ''MyConStr是数据库连接字串   
  7. .CommandText = "getUserName" ''指定存储过程名   
  8. .CommandType = 4 ''表明这是一个存储过程   
  9. .Prepared = true ''要求将SQL命令先行编译   
  10. ''返回值要最先被声明   
  11. .Parameters.Append .CreateParameter("RETURN",2,4)   
  12. ''以下两参数的声明顺序也做相应颠倒   
  13. .Parameters.append .CreateParameter("@UserName",200,2,40)   
  14. .Parameters.append .CreateParameter("@UserID",3,1,4,UserID)   
  15. .Execute   
  16. end with   
  17. if MyComm(0) = 1 then   
  18. UserName = MyComm(1)   
  19. else   
  20. UserName = "该用户不存在"   
  21. end if   
  22. Set MyComm = Nothing  

6. 同时返回参数和记录集的存储过程

有时候,我们需要存储过程同时返回参数和记录集,比如在利用存储过程分页时,要同时返回记录集以及数据总量等参数。以下给出一个进行分页处理的存储过程:

  1. /*SP6*/   
  2. CREATE PROCEDURE dbo.getUserList   
  3. @iPageCount int OUTPUT--总页数   
  4. @iPage int--当前页号   
  5. @iPageSize int --每页记录数   
  6. as   
  7. set nocount on   
  8. begin   
  9. --创建临时表   
  10. create table #t (ID int IDENTITY, --自增字段   
  11. userid int,   
  12. username varchar(40))   
  13. --向临时表中写入数据   
  14. insert into #t   
  15. select userid,username from dbo.[UserInfo]   
  16. order by userid   
  17. --取得记录总数   
  18. declare @iRecordCount int   
  19. set @iRecordCount = rowcount   
  20. --确定总页数   
  21. IF @iRecordCount%@iPageSize=0   
  22. SET @iPageCount=CEILING(@iRecordCount/@iPageSize)   
  23. ELSE   
  24. SET @iPageCount=CEILING(@iRecordCount/@iPageSize)+1   
  25. --若请求的页号大于总页数,则显示最后一页   
  26. IF @iPage > @iPageCount   
  27. SELECT @iPage = @iPageCount   
  28. --确定当前页的始末记录   
  29. DECLARE @iStart int --start record   
  30. DECLARE @iEnd int --end record   
  31. SELECT @iStart = (@iPage - 1) * @iPageSize   
  32. SELECT @iEnd = @iStart + @iPageSize + 1   
  33. --取当前页记录   
  34. select * from #t where ID> @iStart and ID <@iEnd   
  35. --删除临时表   
  36. DROP TABLE #t   
  37. --返回记录总数   
  38. return @iRecordCount   
  39. end   
  40. go  

网学推荐

免费论文

原创论文

设为首页 | 加入收藏 | 论文首页 | 论文专题 | 设计下载 | 网学软件 | 论文模板 | 论文资源 | 程序设计 | 关于网学 | 站内搜索 | 网学留言 | 友情链接 | 资料中心
版权所有 QQ:3710167 邮箱:3710167@qq.com 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
Copyright 2008-2015 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号